使用 sed 附加一行忽略特定行的白色 space

Using sed to append a line ignoring the white space for a specific line

假设我有一个文件

a            b           c
a            b             
a

并且我想在包含 a b 和 c 的行下方追加一行。所以我写了命令:

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

但是没用。我写的sed命令有什么问题?

你的模式不正确。试试这个

sed -e '/a *b *c/a new line' file.txt

如果要就地修改原始文件,请添加 -i 标志。不过,最好先在没有它的情况下进行测试。

您需要匹配第一行的行(或唯一部分),执行:

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