파일의 마지막 세 열만 인쇄

파일의 마지막 세 열만 인쇄

Linux에 다음 파일이 있습니다.

 14:00:01.071 5255  604177
4 14:00:01.074 4608  1415742
 14:00:01.074 18398  1122001
2 14:00:01.074 11723  155575
5 14:00:01.075 4695  885808

원하는 출력:

 14:00:01.071 5255  604177
 14:00:01.074 4608  1415742
 14:00:01.074 18398 1122001
 14:00:01.074 11723 155575
 14:00:01.075 4695  885808

사용된 명령:

gawk '{ print $NF-1, $NF}' filename

하지만 마지막 두 열만 인쇄됩니다.

답변1

가설

  1. 구분 기호는 공백입니다.
  2. 비어 있을 수 있지만 구분 기호가 있는 첫 번째 열을 제외한 모든 열이 필요합니다.
  3. 열 사이에 구분 기호가 하나만 있습니다.

그런 다음 공백으로 구분된 값 파일을 사용하여 cut -d' ' -f2-두 번째 열부터 마지막 ​​열의 내용을 인쇄할 수 있습니다.

답변2

이는 매우 잘못된 것이며 $NF-1마지막 열에서 1을 뺀 값을 인쇄합니다. 변수 (..)이므로 내부에서 명령을 그룹화해야 합니다.NF

gawk 'NF>=3{ print $(NF-2), $(NF-1), $NF}' file

이 부분은 NF>=3최소 3개의 필드가 보장되는 줄의 마지막 3개 필드를 인쇄하고 있는지 안전하게 확인하는 것입니다.

답변3

$ awk '{ print $(NF-2), $(NF-1), $NF}' file1
14:00:01.071 5255 604177
14:00:01.074 4608 1415742
14:00:01.074 18398 1122001
14:00:01.074 11723 155575
14:00:01.075 4695 885808

답변4

다음 명령으로 테스트했는데 정상적으로 작동합니다.

 sed "s/^[0-9]\{1,\}//g" filename| sed -r "s/^\s+//g"

산출

14:00:01.071 5255  604177
14:00:01.074 4608  1415742
14:00:01.074 18398  1122001
14:00:01.074 11723  155575
14:00:01.075 4695  885808

관련 정보