所以我想说我有一个文件
a b c
a b
a
我想在包含b和c的行下面添加一行。所以我写了命令:
sed -i '/s*a b c/a new line'
但它不起作用。我写的sed命令有什么问题?
答案 0 :(得分:0)
您的图案不正确。试试这个
sed -e '/a *b *c/a new line' file.txt
如果要就地修改原始文件,请添加-i
标志。不过不首先测试它可能会更好。
答案 1 :(得分:0)
您需要匹配第一行的行(或唯一部分),执行:
sed -i '/^a[[:blank:]]*b[[:blank:]]*c$/a new line' file.txt
^a[[:blank:]]*
在该行的开头匹配a
,后跟任意数量的空格,类似b[[:blank:]]*
匹配b
后跟任意数量的空格} p>
c$
匹配行尾的c
示例:强>
$ cat file.txt
a b c
a
a
b
$ sed '/^a[[:blank:]]*b[[:blank:]]*c$/a new line' file.txt
a b c
new line
a b
a