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

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

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

예를 들어

자동차.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 열에 값이 없는 값이 몇 개나 있는지 알고 싶습니다. 이 경우는 2)입니다.

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

답변1

짧은grep접근하다:

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

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

답변2

또 다른 grep방법은 mpg가 28열에서 시작하도록 파일 형식이 엄격하게 지정된 경우입니다.

$ 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

관련 정보