[英]remove lines after second pattern sed
我正在尋找一個修剪文件,我需要刪除第二場比賽之后的所有內容(以及第一場比賽之前的所有內容)。
例如說我有這段文字:
xxx xxx
yyy yyy
New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
如果我使用以下sed
命令:
sed -i '1,/New USB device found/d' <FILE>
這會刪除第一個比賽之前的所有內容。 很棒:
New USB device found
xxx xxx
yyy yyy
zzz zzz
New USB device found
xxx xxx
yyy yyy
但是我只是那里的1/2,現在我想在第二場比賽之后刪除所有內容,以得到以下結果:
New USB device found
xxx xxx
yyy yyy
zzz zzz
因此,僅第一設備的數據。
這個awk單行代碼應提供您想要的東西:
awk '/New USB device found/{p++}p==1' file
測試您的數據:
kent$ awk '/New USB device found/{p++}p==1' file
New USB device found
xxx xxx
yyy yyy
zzz zzz
如果您有GNU awk
則:
$ awk 'NR==2{print RS,$0}' RS='New USB device found' file
New USB device found
xxx xxx
yyy yyy
zzz zzz
只需將要打印的記錄號與NR
。 這使得僅通過將NR==2
更改為NR==112
或NR==4
輕松打印第112條記錄。
這是一個sed解決方案:
sed -i '1,/New USB device found/d; /New USB device found/,$d' <FILE>
使用sed:
sed -n '/New/{:a;p;n; /New/!ba}' input
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.