我想在模式匹配后插入一行,并使用sed
忽略Bash shell中的任何注释行(以'#'开头)。
以下是一个示例:在pattern
之后插入新行:
输入文件:
foo
Art
street
#pattern
foo
pattern
color
输出
foo
Art
street
#pattern
foo
pattern
NEW LINE HERE
color
答案 0 :(得分:2)
使用sed
:
$ cat file
foo
Art
street
#pattern
foo
pattern
color
$ sed '/^[^#]*pattern/ a NEW LINE HERE' file
foo
Art
street
#pattern
foo
pattern
NEW LINE HERE
color
答案 1 :(得分:1)
尝试一次。
.apply(str)
答案 2 :(得分:1)
sed的另一种方法:
sed 's/^pattern.*/&\nNEW LINE HERE/' file
将以pattern
开头的行替换为匹配的行(&
),后跟新行(\n
)和所需的字符串。
答案 3 :(得分:0)
使用awk
:
awk -v line='NEW LINE HERE' -v pat='pattern' '1; $0 ~ pat && !/^[ \t]*#/{print line}' file
foo
Art
street
#pattern
foo
pattern
NEW LINE HERE
color