yae*_*ael 3 bash solaris text-processing cut tr
由于我的 Solaris 机器上的技术原因,我无法使用awk来打印行中的最后一个字段。
awk从行(使用cut或tr...等)打印最后一个字段的其他替代方法是什么?
示例 1:
/usr/bin/hostname
machine1b
/usr/bin/hostname | /usr/bin/sed 's/\(.\{1\}\)/\1 /g' | /usr/bin/awk '{print $NF}'
b
Run Code Online (Sandbox Code Playgroud)
例2
echo 1 2 3 4 5 | /usr/bin/awk '{print $NF}'
5
Run Code Online (Sandbox Code Playgroud)
echo foo bar baz | perl -pe 's/.*[ \t]//'
Run Code Online (Sandbox Code Playgroud)
如果您必须先去除尾随空格,请这样做:
echo "foo bar baz " | perl -lpe 's/\s*$//;s/.*\s//'
Run Code Online (Sandbox Code Playgroud)
以下内容由Mr.spuratic在评论中提供:
echo "foo bar baz " | perl -lane 'print $F[-1]'
Run Code Online (Sandbox Code Playgroud)
echo foo bar baz | while read i; do echo ${i##* }; done
Run Code Online (Sandbox Code Playgroud)
或者bash不是您的默认外壳:
echo foo bar baz | bash -c 'while read i; do echo ${i##* }; done'
Run Code Online (Sandbox Code Playgroud)
如果您必须先去除单个尾随空格,请执行
echo "foo bar baz " | while read i; do i="${i% }"; echo ${i##* }; done
Run Code Online (Sandbox Code Playgroud)
echo foo bar baz | tr ' ' '\n' | tail -n1
Run Code Online (Sandbox Code Playgroud)
尽管与上述解决方案相比,这仅适用于单行输入。在这种方法中抑制尾随空格:
echo "foo bar baz " | tr ' ' '\n' | grep . | tail -n1
Run Code Online (Sandbox Code Playgroud)