使用 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
假设我有一个文件
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