Text-Processing

如果最後一個字母是“r”,則列印最後一個單詞

  • October 5, 2022

例如,如果最後一個字母是,我如何列印一行上的最後一個單詞r

I am reading the book
I am reading the letter

結果:

letter

我使用 bash linux,問候

$ awk '/r$/ { print $NF }' file
letter

這用於awk測試每一行是否以字元結尾r。使用正則表達式進行測試,r$. 僅當最後一個字元是 時,此表達式才匹配r。如果匹配,$NF則列印最後一個以空格分隔的欄位 ,。

請注意,這假定行尾沒有尾隨空格,並且“單詞”是指由一些空格分隔的任何字元串。


使用sed

$ sed -e '/r$/!d' -e 's/.* //' file
letter

這首先會跳過任何不以 an 結尾的行r(這是第一個表達式)。然後它使用替換命令刪除所有剩餘行上的所有內容,包括最後一個空格字元。然後輸出剩下的任何內容。

同樣,這假定任何行上都沒有尾隨空格字元,並且“單詞”是由空格分隔的任何字元串。


使用rev++ (我並不是認真地建議您使用它)cutgrep

$ rev file | cut -d ' ' -f 1 | rev | grep 'r$'
letter

這使用非標準實用程序反轉每個單獨的行rev。然後,它使用提取第一個空格分隔的字元串cut並將結果單詞反轉為其原始順序。然後,該實用程序用於使用熟悉的正則表達式grep提取以 結尾的任何單詞。r

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