Linux에서 sed 명령을 사용하여 각 줄의 마지막 단어를 인쇄할 수 있습니까?

Linux에서 sed 명령을 사용하여 각 줄의 마지막 단어를 인쇄할 수 있습니까?

다음 라인으로 구성된 파일이 있다고 가정합니다.

12345 567 7878 66

   어3 t45t y6y46y


 4년 6년 656년 y5년

   46y6 65y7 y66uyuy

 yy46y6y

출력은 다음과 유사해야 합니다.

66

y6y46y

y5y

y66uyuyy

y46y6y

sed 's/.* //g'filename 명령과 다른 여러 명령을 시도했지만 sed작동하지 않습니다.

정확한 명령어가 무엇인지 알 수 있을까요 sed?

답변1

당신은 시도 할 수 있습니다:

  • sed 's/.* //'
  • awk '{print $NF}'

파일에 공백으로 끝나는 줄이 있는 경우 를 사용하여 미리 해당 후행 공백을 제거할 수 있습니다 sed 's/ +$//'. 이 두 가지 작업을 한 줄로 결합할 수 있습니다.

  • sed -e 's/ +$//' -e 's/.* //'

답변2

awk '{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//'

awk이것은 여전히 ​​각 빈 줄에 대해 빈 줄을 인쇄합니다(as 연산자가 있는 전체 줄은 $0에 적용되어 완전한 레코드를 생성합니다). 이를 방지하려면:

awk 'NF{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//;/./!d'

답변3

변수 awk$NF각 레코드의 마지막 필드;이를 사용하면 다음과 같이 파일의 마지막 필드만 인쇄할 수 있습니다.

awk '{print $NF}' file

답변4

grep대신 다음과 같은 적절한 패턴을 사용할 수 있습니다 sed.

grep -o "[a-Z0-9]*$"

이 예에서는 [...]"단어"에 적합한 것으로 간주되는 문자 범위를 포함합니다(이 경우 영숫자, 추가 기호를 추가할 수 있으며 그 중 일부는 이스케이프해야 함).

관련 정보