第二个模式sed后删除行

Mik*_*e Q 1 bash awk sed

我正在寻找修剪文件,我需要在第二场比赛后(以及第一场比赛前的所有内容)删除所有内容.

比如说我有这个文字:

xxx xxx
yyy yyy
New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
Run Code Online (Sandbox Code Playgroud)

如果我使用以下sed命令:

sed -i '1,/New USB device found/d' <FILE>  
Run Code Online (Sandbox Code Playgroud)

这会在第一场比赛前删除所有内容.这很棒:

New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
Run Code Online (Sandbox Code Playgroud)

但我只有1/2路,现在我想在第二场比赛后删除所有内容以获得此结果:

New USB device found
xxx xxx
yyy yyy
zzz zzz
Run Code Online (Sandbox Code Playgroud)

因此只是第一个设备的数据.

Ken*_*ent 6

这个awk单行应该给你想要的东西:

awk '/New USB device found/{p++}p==1' file
Run Code Online (Sandbox Code Playgroud)

测试您的数据:

kent$  awk '/New USB device found/{p++}p==1' file
    New USB device found
    xxx xxx
    yyy yyy
    zzz zzz
Run Code Online (Sandbox Code Playgroud)