각 줄의 마지막 요소 인쇄

각 줄의 마지막 요소 인쇄

파일의 마지막 탭 뒤에 요소를 인쇄하는 방법은 무엇입니까?

예: 파일 1

A    3    8    6    7
B    4    6    2    3    6    8
c    1    9

다음을 반환합니다:

7
8
9

답변1

NF이 변수를 영리하게 사용할 수 있습니다awk

awk '{print $NF}' File1

~에서man awk

핵인자 현재 입력 레코드의 필드 수입니다.

따라서 NF필드 수가 주어지고 인쇄 문에서 사용할 수 있는 필드 $NF로 확장됩니다 .$3

답변2

첫 번째 필드와 마지막 필드 대신 마지막 필드만 원하는 경우 다음을 시도해 볼 수 있습니다.

rev file | cut -f 1

rev파일의 각 줄을 반대로 하고 cut첫 번째 필드만 인쇄합니다(필드는 기본적으로 탭으로 정의됨). 행이 반전되었으므로 첫 번째 필드가 원래 마지막 필드입니다.

위의 코드는 주어진 예제에서 작동하지만 @Bernhard가 아래에서 지적한 것처럼 역방향 단일 문자보다 긴 필드를 인쇄합니다. 이 경우 두 번째 개정판이 필요합니다.

 rev file | cut -f 1 | rev

답변3

sed다음 작업을 사용할 수 있습니다 .

sed 's/.* //' file # where ' ' -- is your delimiter

구분 기호 앞의 모든 기호가 제거됩니다. 파일이 탭으로 구분된 경우 다음을 사용하세요.

sed 's/.*\t//' file

답변4

awk실제로 작업을 위한 도구이지만 완전성을 위해 여기에 GNU grep방식이 있습니다.

grep -oE '[^[:space:]]+$' file
7
8
9

관련 정보