파일의 마지막 탭 뒤에 요소를 인쇄하는 방법은 무엇입니까?
예: 파일 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