Awk

使用 sed 匹配兩個模式之間的線一次

  • April 6, 2018

鑑於:sed -e '/pattern1/,/pattern2/!d' file.org

如何匹配 pattern1 和 pattern2 之間第一次出現的線條,而不是其餘的?

例如:

pattern1
aaaa
pattern2
pattern1
bbb
pattern

應該輸出: aaa

歡迎使用替代解決方案(使用grepawk其他)。

$ cat input
a
b
c
a
b
c
$ sed -n '/a/,/c/p;/c/q' input
a
b
c

搜尋要列印的範圍,然後在看到第一個“結束”標記後退出。

awk使排除起點和終點更容易一些:

$ awk 'BEGIN { p=0 }  /c/ { p=0; exit } p {print} /a/ { p=1 }' input
b

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