Shell-Script
列印輸出匹配模式直到其他模式匹配
我試圖在模式匹配後列印文本,直到它在文件中多次匹配其他模式。我試圖修改這裡給出的腳本,但沒有成功。例如。的內容
file1.txt
example text more example pattern1 important text very important need this too pattern2 i dont require this junk text more junk pattern1 important text very important need this too pattern2 junk
預期產出
pattern1 important text very important need this too pattern1 important text very important need this too
任何人都可以建議編輯嗎?
謝謝。
模式之間的行之間的匹配,包括任一邊界,是 sed 中的標準範圍選擇器:
sed -n -e '/pattern1/,/pattern2/p' example.txt
根據您對效率的要求(文件有多大),我可能會很懶惰並使用第二遍來刪除 pattern2 標記:
cat example.txt \ | sed -n -e '/pattern1/,/pattern2/p' \ | sed -e '/pattern2/d'
(是的,這是對 cat 的無用使用,因為我更喜歡連結多個管道過濾器的可讀性而不是性能損失,而且我現在不確定
< example.txt | sed ... | sed ...
是 POSIX 強制要求還是只是碰巧出現在 bash 中的擴展和zsh。)