
awk
내 Solaris 시스템의 기술적인 이유로 인해 줄의 마지막 필드를 인쇄하는 데 사용할 수 없습니다 .
awk
한 줄의 마지막 필드를 인쇄하는 것( 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