我需要使用「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. 刪除不匹配SED
- 6. 在匹配模式之後/之前添加/刪除單詞
- 7. 如何在使用sed模式匹配之前刪除5行之前和6行?
- 8. 你可以使用sed刪除匹配,只有某些行後?
- 9. 刪除除匹配花樣行最佳實踐(sed)之外的所有行
- 10. 刪除匹配行前後的某一行和行
- 11. 在與sed匹配前刪除所有行
- 12. 刪除使用sed匹配多個模式的行
- 13. 使用SED刪除有多個字段匹配的行
- 14. 刪除第一個匹配
- 15. perl匹配並刪除行數
- 16. MySQL的刪除,其中2場匹配
- 17. 比較2列和刪除不匹配
- 18. 匹配第一個字符,如果匹配刪除整行
- 19. 在比賽前刪除3行,比賽後刪除1行,不包括sed的匹配行
- 20. 需要刪除除匹配字符串以外的整行
- 21. 如何在匹配模式之前使用sed插入一行
- 22. 在兩個方向刪除n行和sed中的匹配?
- 23. 使用sed並刪除最後一行
- 24. 如何在匹配字符串之後刪除換行直到下一次在Linux中匹配?
- 25. 如何刪除行匹配標準和行與之相鄰
- 26. sed - 刪除除匹配模式以外的所有行
- 27. sed多行刪除之前模式
- 28. 匹配後的字符串的一部分刪除,但使用都不行SED
- 29. 在第一個實例之前和之後刪除Sed命令
- 30. sed找到匹配後的第一個空行並替換
感謝肯特這是工作,但你知道如何使用sed做到這一點? – wael