열에 존재하지 않는 값 수를 찾는 방법

열에 존재하지 않는 값 수를 찾는 방법

한 열에 존재하지 않는 값이 몇 개 있는지, 즉 "."이 하나만 있는지 찾는 방법을 알아내려고 노력했습니다.

예를 들어

자동차.txt

Car           Colour      mpg          Year
vw_golf         blue       56          2006
vw_polo          red       66          2010
honda_civic    white       .           2007
ford_ka          red       .           2014

그래서 제가 관심 있는 것은 Honda Civic과 Ford ka입니다. mpg 열에 숫자가 없기 때문에 mpg 열에 mpg 열에 숫자가 없는 값이 몇 개 있는지 알고 싶습니다. 값(이 경우 2)입니다.

내가 겪고 있는 문제는 awk 명령을 사용할 때 오류가 발생하는 것 같습니다.

답변1

짧은grep방법:

grep -Ec '^\S+\s+\S+\s+\.\s+' file
2

  • -E- 확장 정규식 허용
  • -c- 일치하는 줄의 개수를 인쇄합니다.
  • \S+- 동의어인 공백이 아닌 문자와 일치합니다.[^[:space:]]
  • \s+- 동의어인 공백 문자와 일치합니다.[[:space:]]

답변2

다른 grep방법으로, 파일 형식이 28열부터 mpg로 엄격하게 지정되어 있는 경우:

$ grep '...........................\.' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ grep -c '...........................\.' input
2

이는 28개의 마침표("모든" 문자의 경우)와 이스케이프된 마침표("마침표")가 뒤따르는 것입니다.

또는 awk,~처럼 언급하다댓글에서:

$ awk '$3 == "."' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ awk '$3 == "."' input | wc -l
2

관련 정보