input.txt
:使用SED刪除線的範圍內,除了結束模式
blah1
blah2
start_pattern
blah3
blah4
blah5
end_pattern
blah6
blah7
我想input.txt
成爲:
blah1
blah2
end_pattern
blah6
blah7
我嘗試以下,但沒有奏效。
sed -i "/start_pattern/, /end_pattern/{$!d}" input.txt
input.txt
:使用SED刪除線的範圍內,除了結束模式
blah1
blah2
start_pattern
blah3
blah4
blah5
end_pattern
blah6
blah7
我想input.txt
成爲:
blah1
blah2
end_pattern
blah6
blah7
我嘗試以下,但沒有奏效。
sed -i "/start_pattern/, /end_pattern/{$!d}" input.txt
This question涉及您的問題:
$ sed '/start_pattern/,/end_pattern/{/end_pattern/!d}' foo.txt
blah1
blah2
end_pattern
blah6
blah7
完美地工作,謝謝。 – Springray
的sed是在單行簡單替換一個很好的工具。對於任何其他文本操作只用awk更清晰,更簡單,更易於擴展的解決方案:
$ awk '/start_pattern/{f=1} /end_pattern/{f=0} !f;' file
blah1
blah2
end_pattern
blah6
blah7
參見:
$ awk '/start_pattern/{f=1} !f; /end_pattern/{f=0}' file
blah1
blah2
blah6
blah7
$ awk '!f; /start_pattern/{f=1} /end_pattern/{f=0}' file
blah1
blah2
start_pattern
blah6
blah7
$ awk '/start_pattern/{f=1} /end_pattern/{f=0} f;' file
start_pattern
blah3
blah4
blah5
$ awk '/start_pattern/{f=1} f; /end_pattern/{f=0}' file
start_pattern
blah3
blah4
blah5
end_pattern
$ awk 'f; /start_pattern/{f=1} /end_pattern/{f=0}' file
blah3
blah4
blah5
end_pattern
同意,這太漂亮了! –
對此深感抱歉。感謝您修復我的格式。 – Springray
沒問題:)歡迎來到SO。 –
在這個問題http://stackoverflow.com/q/8164604/356440他們正在處理使用'sed'的多行編輯和刪除,也許它可以給你一些線索/曲目。 –