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

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

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

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

답변1

Stephen Chazeras가 제안한

awk 'NF != 3'

세 개의 열을 포함하지 않는 모든 행을 인쇄하는 간단한 방법은 다음과 같습니다. 해당 행이 발견되면 명령이 실패 상태를 반환하도록 하려면 다음을 수행하십시오.

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

아무것도 인쇄하지 않으려면 제거 print;하고 종료 상태를 통해 그러한 줄의 존재를 보고하십시오.

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

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

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

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

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

답변2

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

awk '{print NR,NF}'

답변3

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

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

관련 정보