最後の文字が「r」の場合、最後の単語を印刷します。

最後の文字が「r」の場合、最後の単語を印刷します。

たとえば、行の最後の文字がある場合、最後の単語をどのように印刷しますかr

I am reading the book
I am reading the letter

結果:

letter

私はbash Linuxを使用しています。

ベストアンサー1

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

awkこれは、各行が文字で終わるかどうかをテストするために使用されますr。テストは正規表現を使用して実行されますr$。この式は、最後の文字が.の場合にのみ一致しますr。一致するものがある場合は、$NFスペースで区切られた最後のフィールドであるを印刷します。

これは、行の末尾に末尾のスペースがなく、「単語」がいくつかのスペースで区切られた文字列であると仮定することに注意してください。


使用sed:

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

rこれは最初にan(最初の式)で終わらない行をスキップします。次に、置換コマンドを使用して、残りのすべての行の最後の空白文字まですべて削除します。その後、残りを出力します。

繰り返しますが、これは任意の行に末尾の空白文字がなく、「単語」がスペースで区切られた文字列であると仮定します。


++を使用してくださいrev(真剣に使用することをお勧めしません)cutgrep

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

これは非標準ユーティリティを使用して各個々の行を反転しますrev。次に、を使用してスペースで区切られた最初の文字列を抽出し、結果のcut単語を元の順序に置き換えます。その後、ユーティリティは使い慣れた正規表現を使用して、grepで終わるすべての単語を抽出します。r

おすすめ記事