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
가설
- 구분 기호는 공백입니다.
- 비어 있을 수 있지만 구분 기호가 있는 첫 번째 열을 제외한 모든 열이 필요합니다.
- 열 사이에 구분 기호가 하나만 있습니다.
그런 다음 공백으로 구분된 값 파일을 사용하여 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