簡體   English   中英

sed,在模式匹配后插入一行,並忽略任何以#開頭的注釋行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM