我的文件:如何才能獲得內容,直到與sed/awk進行第二次比賽?
...
str
...
str
...
我用:
sed '/str/q' myfile
此打印:
...
str
但我需要:
...
str
...
str
?我怎樣才能得到上面? (...
是其他的字符串。)
我的文件:如何才能獲得內容,直到與sed/awk進行第二次比賽?
...
str
...
str
...
我用:
sed '/str/q' myfile
此打印:
...
str
但我需要:
...
str
...
str
?我怎樣才能得到上面? (...
是其他的字符串。)
一種方式:
awk '/str/ && f{print;exit}/str/{f=1}1' f=0 file
當/ STR /遇到第一時間,變量設置爲1,並保持印刷。下次遇到時,打印行並停止執行。
另一種方式,計數比賽並退出第二場比賽。打印其他行。
awk 'BEGIN {m=0}; {print}; /str/ {m++; if (m == 2) { exit; } }' file
取決於你有沒有在你的問題中所述的要求,這可能是你想要什麼:
$ awk '1; /str/&&c++{exit}' file
...
str
...
str
sed '/str/{:second n; /str/q; b second}' myfile
當SED發現第一個'str'時,啓動一個循環直到找到下一個循環。
更多細節在這裏:SED loop match
這很好,謝謝! – kate
如果Perl是一種選擇:
perl -pe '$m++ if /str/; exit if $m==2' file
計數匹配。如果匹配==,則退出。
如果'str'不在文件中出現兩次,您希望輸出什麼內容? –