真珠

真珠

awk私のSolarisシステムの技術的な理由から、行の最後のフィールドを印刷するために使用することはできません。

awk1行の最後のフィールドを印刷する(cutまたは... etcを使用する)他trの代替案は何ですか?

例1:

/usr/bin/hostname
machine1b
/usr/bin/hostname  | /usr/bin/sed 's/\(.\{1\}\)/\1 /g' |  /usr/bin/awk  '{print $NF}'
b

実施例2

echo 1 2 3 4 5 | /usr/bin/awk  '{print $NF}'

5

ベストアンサー1

真珠

echo foo bar baz | perl -pe 's/.*[ \t]//'

末尾のスペースを最初に削除する必要がある場合は、次の手順に従います。

echo "foo bar baz " | perl -lpe 's/\s*$//;s/.*\s//'

次の内容はあなたが提供したものです。スプラティック氏コメントから:

echo "foo bar baz " | perl -lane 'print $F[-1]'

吹く

echo foo bar baz | while read i; do echo ${i##* }; done

またはbashデフォルトのシェルではありません。

echo foo bar baz | bash -c 'while read i; do echo ${i##* }; done'

単一の末尾のスペースを最初に削除する必要がある場合は、次のようにします。

echo "foo bar baz " | while read i; do i="${i% }"; echo ${i##* }; done

trと尾

echo foo bar baz | tr ' ' '\n' | tail -n1

上記のソリューションと比較すると、これは単一の入力ラインでのみ機能します。この方法では、末尾のスペースを抑制します。

echo "foo bar baz " | tr ' ' '\n' | grep . | tail -n1

おすすめ記事