使用awk或sed删除模式之前的所有内容,包括模式

5 unix awk sed pattern-matching

aaa aaaa aaaa aaaa
sss ssss ssss ssss
ddd dddd dddd dddd
fff ffff ffff ffff
abc pattern asd fde 
111 222 333 444 555
666 777 888 999 000
Run Code Online (Sandbox Code Playgroud)

期望的输出:如果

111 222 333 444 555
666 777 888 999 000
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 11

只要找到模式,就设置一个标志.从那一刻开始,打印线条:

$ awk 'p; /pattern/ {p=1}' file
111 222 333 444 555
666 777 888 999 000
Run Code Online (Sandbox Code Playgroud)

或者也

awk '/pattern/ {p=1;next}p' file
Run Code Online (Sandbox Code Playgroud)

pattern在每一行中寻找.找到它时,变量p设置为1.棘手的一点是,只有在打印时才打印线条p>0,以便打印以下行.

这是如何在两种模式之间选择线条的具体情况当没有这样的第二种模式时.


Ken*_*ent 8

sed '1,/pattern/d' file
Run Code Online (Sandbox Code Playgroud)

适合你的榜样.

sed '0,/pattern/d' file
Run Code Online (Sandbox Code Playgroud)

更可靠.

  • 是.除非在第一行找到`pattern`.最好以"0"开始范围. (2认同)