たとえば、行の最後の文字がある場合、最後の単語をどのように印刷しますか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
(真剣に使用することをお勧めしません)cut
。grep
$ rev file | cut -d ' ' -f 1 | rev | grep 'r$'
letter
これは非標準ユーティリティを使用して各個々の行を反転しますrev
。次に、を使用してスペースで区切られた最初の文字列を抽出し、結果のcut
単語を元の順序に置き換えます。その後、ユーティリティは使い慣れた正規表現を使用して、grep
で終わるすべての単語を抽出します。r