如何刪除最後一次出現的字符串之前的所有行。就像如果我有一個看起來像刪除字符串的最後一個字母之前的所有行
Icecream is good And Chocolate is good And They have lots of sugar
如果我想畢竟行的文件,幷包括「和」什麼是做到這一點的乾淨的方式最後一次出現?具體而言,我想
And
They have lots of sugar
我在做sed -n -E -e '/And/,$p' file
但我認爲這給了我第一次出現。
如何刪除最後一次出現的字符串之前的所有行。就像如果我有一個看起來像刪除字符串的最後一個字母之前的所有行
Icecream is good And Chocolate is good And They have lots of sugar
如果我想畢竟行的文件,幷包括「和」什麼是做到這一點的乾淨的方式最後一次出現?具體而言,我想
And
They have lots of sugar
我在做sed -n -E -e '/And/,$p' file
但我認爲這給了我第一次出現。
這可能爲你工作(GNU SED):
sed -n '/And/h;//!H;$!d;x;//p' file
替換含有And
行保留空間什麼。將所有其他行追加到保留空間。在文件末尾,交換保存空間的模式空間,並打印出結果,只要它匹配所需的字符串And
即可。
我知道你要求sed,而且波通提供了一個很好的sed解決方案。但是,作爲比較,這裏是一個awk的解決方案:
$ awk 's{s=s"\n"$0;} /And/{s=$0;} END{print s;}' file
And
They have lots of sugar
它是如何工作的:
s{s=s"\n"$0;}
如果變量s
不爲空,然後添加到它當前行, $0
。
/And/{s=$0;}
如果當前行包含And
,然後設置s
當前行,$0
。
END{print s;}
後,我們已經達到了文件的末尾,打印s
。
$ tac file | awk '!f; /And/{f=1}' | tac
And
They have lots of sugar
$ awk 'NR==FNR{if(/And/)nr=NR;next} FNR>=nr' file file
And
They have lots of sugar
請提供說明。 –
不,這是從閱讀任何awk文檔的頁面或2中可以獲得的非常基本的東西,但是我會很樂意回答任何人在花費一點努力爲自己弄明白之後所提出的任何問題。 –
誰在乎它是多麼的基礎。作爲一個有這麼多點的人,你應該很熟悉SO禮儀。你的問題被標記爲質量。由於這是正確的,我所做的只是發表評論。你不能指望人們只是「讀一頁或兩頁」......如果你能這樣做,那麼它就不會那麼受歡迎。事實是,正確與否,你的回答很糟糕。你應該修復它。 –
添加所需輸出爲樣本輸入。 – Cyrus
請看看:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers) – Cyrus