awk
私のSolarisシステムの技術的な理由から、行の最後のフィールドを印刷するために使用することはできません。
awk
1行の最後のフィールドを印刷する(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
答え2
使用カット:
最後のフィールド:
echo 1 2 3 4 5 | rev | cut -f1 -d ' '
最後の文字:
echo 1 2 3 4 5 | rev | cut -c1
答え3
echo hello my friend | tac -s' ' | tr '\n' ' ' | cut -d' ' -f 1
答え4
次のように動作する必要があります。
sed -E -e 's/.* ([^ ]+)$/\1/'
% echo 1 2 3 4 5 | sed -E -e 's/.* ([^ ]+)$/\1/'
5