Shell-Script

列印輸出匹配模式直到其他模式匹配

  • April 20, 2018

我試圖在模式匹配後列印文本,直到它在文件中多次匹配其他模式。我試圖修改這裡給出的腳本,但沒有成功。例如。的內容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。)

引用自:https://unix.stackexchange.com/questions/438906