`sed: -e 表达式 #1, char 4: 未知命令:` 但行结尾很好

`sed: -e 表达式 #1, char 4: 未知命令:` 但行结尾很好

我想删除set -x文件“$(which tsc)”中包含的行,但出现错误:

$ sed -i ".bak" 'set -x' "$(which tsc)"
sed: -e expression #1, char 1: unknown command: `.'

我检查了解决方案在这里,但我的行终止符是LF

答案1

你有语法错误。后面不能有任何空格-i,只有扩展名;这是(初始)错误消息的来源。

另外,要根据您需要的模式删除一条线/<pattern>/ dsed还有其他方法,但这是最干净的)。所以这样做:

sed -i".bak" '/set -x/ d' "$(which tsc)"

(可选)由于备份扩展名不包含任何空格或控制字符,因此在这种情况下您可以不加引号即可逃脱:

sed -i.bak '/set -x/ d' "$(which tsc)"

答案2

尝试这个命令:

sed -i.bak '/pattern to match/d' ./infile

您也可以参考删除文本文件中包含特定字符串的行(在 Stack Overflow 上)了解更多删除包含set -x.

相关内容