我正在寻找修剪文件,我需要在第二场比赛后(以及第一场比赛前的所有内容)删除所有内容.
比如说我有这个文字:
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)
因此只是第一个设备的数据.
这个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)