如何使用sed仅移除文本内层括号而保留行首尾的外层括号
sed单行命令实现需求
最简等效方案
直接将你的两条原有替换规则用分号合并到同一条sed命令中,执行效果和分开运行两条命令完全一致:
sed -i 's/) //g;s/ (//g' myfile.txt
如果是macOS系统环境,-i参数需要额外指定备份后缀,不需要备份的话填空即可:
# macOS 环境适用 sed -i '' 's/) //g;s/ (//g' myfile.txt
更严谨的精准匹配方案
如果担心误删文件中其他位置的( 或 )字符,可以使用精准匹配规则,仅针对(Spur)前后的括号做删除,更加安全:
sed -i 's/ (\(Spur\)) / \1 /g' myfile.txt
规则逻辑:匹配前后带空格的(Spur)片段,捕获中间的Spur内容,替换为前后带空格的Spur,既删除了包裹Spur的括号,也不会影响行首尾的外层括号,适配你的需求。
内容的提问来源于stack exchange,提问作者teamg
相关产品推荐
相关产品推荐

