[英]Sed, insert a line after a pattern match and ignore any commented line strating with #
我想在模式匹配后插入一行,並使用sed
忽略Bash shell中的任何注釋行(以'#'開頭)。
這是一個示例:在pattern
之后插入新行:
輸入文件:
foo
Art
street
#pattern
foo
pattern
color
輸出:
foo
Art
street
#pattern
foo
pattern
NEW LINE HERE
color
與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
嘗試跟隨一次。
awk '/pattern/ && !/#/{print $0 ORS "NEW LINE HERE";next} 1' Input_file
sed的另一種方法:
sed 's/^pattern.*/&\nNEW LINE HERE/' file
將pattern
開頭的行替換為匹配的行( &
),然后是新行( \\n
)和所需的字符串。
使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.