진주

진주

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

관련 정보