텍스트 파일의 각 열에 있는 행 수 계산

텍스트 파일의 각 열에 있는 행 수 계산

다음 형식의 텍스트 파일이 있습니다.

5 3 1
2 3 4
.....
.....
즉 공백으로 구분된 3개의 숫자 열/ 그러나 일부 행은 다음과 같을 수 있습니다.
2
3 1
따라서 텍스트 파일에 그러한 항목이 있는지 감지하고 싶습니다 . 불일치를 찾아서 인쇄합니다. 어떻게 해야 하나요?

답변1

스테판 차젤라스가 제안한 것

awk 'NF != 3'

이는 정확히 세 개의 열이 없는 모든 줄을 인쇄하는 간단한 방법입니다. 해당 줄이 발견되면 명령이 실패 상태를 반환하도록 하려면 다음을 수행하십시오.

awk 'NF != 3 {print; ++bad} END {exit(!!bad)}'

print;아무 것도 인쇄하지 않고 종료 상태를 통해 해당 줄의 존재만 보고하려면 제거하세요 .

grep을 사용하여 이 작업을 수행할 수도 있습니다.

grep -Ev '^[^ ]+ +[^ ]+ +[^ ]+$'

좀 더 엄격하게 정수를 포함하는 정확히 세 개의 열로 구성되지 않은 모든 줄을 인쇄하려면 다음을 수행하세요.

grep -Ev '^([0-9]+) +([0-9]+) +([0-9]+)$'

하나 이상의 탭을 열 구분 기호로 허용하려면 where is a tab 문자 [␉ ]+대신 사용하십시오 . 정확히 하나의 탭 또는 일련의 공백을 허용하는 데 사용됩니다 . +(␉| +)

답변2

실제로 원하는 것이 질문 제목의 내용인 경우 이 awk명령은 줄 번호와 각 줄의 필드 수를 인쇄합니다.

awk '{print NR,NF}'

답변3

awk '{if(NF != 3) print NR,NF}' file.txt

그러면 3개의 필드가 없는 파일의 행 번호와 해당 필드의 수가 인쇄됩니다.

관련 정보