使用sed附加一行忽略特定行的空格

时间:2016-09-05 19:04:33

标签: sed whitespace

所以我想说我有一个文件

a            b           c
a            b             
a

我想在包含b和c的行下面添加一行。所以我写了命令:

    sed -i '/s*a b c/a new line'

但它不起作用。我写的sed命令有什么问题?

2 个答案:

答案 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后跟任意数量的空格

  • 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