我需要使用「sed」找到匹配,並在匹配之前刪除2行,之後刪除3行,並打印輸出, 我怎樣才能做到這一點 ?我需要使用sed找到一個匹配,並且在此匹配之前刪除2行,之後刪除2行
0
A
回答
2
如果文件不是很大,試試這個:
awk 'NR==FNR{if($0~/matchWord/){for(i=NR-2;i<=NR+3;i++){if(i!=NR)a[i]++}}}\
NR>FNR{if(!(FNR in a))print $0}' file file
我沒有測試,但應該工作。
2
首先,你不想在sed中這樣做。第二,你的問題是不適當的:如果你在第5和第8行有一場比賽,你會怎麼做?第8行被刪除,第6行被保留?假設這是不是一個問題,這似乎做你想要什麼:
#!/bin/sed -nf 1{ h; d; } H 2,5d g /^\([^\n]*\n\)\{2\}match/!P /^\([^\n]*\n\)\{2\}match/{ s/\n[^\n]*$// N } s/[^\n]*\n// h $p
注:如果在最後3行文件時的比賽中,根據需要,這並不表現。這個案件是作爲(自虐)讀者的練習。
+0
我看到我誤解了你的問題(根據你的陳述,肯特的解決方案做了你想要的)。這會在比賽前刪除兩行中的一行,在比賽後刪除一行三行。你想刪除每場比賽總共6條線嗎?這實際上更容易。 –
相關問題
- 1. 刪除match1之後只匹配到匹配2
- 2. 刪除匹配行的sed
- 3. SED刪除匹配和下一行
- 4. 刪除不匹配SED
- 5. 在匹配模式之後/之前添加/刪除單詞
- 6. 如何在使用sed模式匹配之前刪除5行之前和6行?
- 7. 你可以使用sed刪除匹配,只有某些行後?
- 8. 刪除除匹配花樣行最佳實踐(sed)之外的所有行
- 9. 刪除匹配行前後的某一行和行
- 10. perl匹配並刪除行數
- 11. 比較2列和刪除不匹配
- 12. 在比賽前刪除3行,比賽後刪除1行,不包括sed的匹配行
- 13. 需要刪除除匹配字符串以外的整行
- 14. 如何在匹配字符串之後刪除換行直到下一次在Linux中匹配?
- 15. 如何刪除行匹配標準和行與之相鄰
- 16. sed多行刪除之前模式
- 17. 在第一個實例之前和之後刪除Sed命令
- 18. sed找到匹配後的第一個空行並替換
- 19. 查找匹配2個日期操作之間的匹配
- 20. sed,刪除一行在另一個之前
- 21. Perl或Sed命令在匹配表達式之前刪除內容
- 22. 如何刪除兩個匹配的行,同時刪除重複
- 23. 如何在模式匹配時使用sed刪除多行並停止到第一個空行?
- 24. 匹配部分重複的行(並且刪除除最老的之外的所有行)
- 25. 刪除一行後XtraGrid行索引不匹配
- 26. 如何使用sed刪除匹配的行,上面的行和下面的行?
- 27. 刪除2(多)匹配一個正則表達式類
- 28. 在字符匹配前刪除數據
- 29. 如何在條件匹配時僅使用sed刪除第一行?
- 30. 正則表達式匹配字符串之前或之後,並且每個集合只返回一個匹配
感謝肯特這是工作,但你知道如何使用sed做到這一點? – wael