
나는 열에 존재하지 않는 값, 즉 "."만 있는 값이 몇 개인지 찾는 방법을 알아내려고 노력해 왔습니다.
예를 들어
자동차.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 '$3 == "."' input
honda_civic white . 2007
ford_ka red . 2014
$ awk '$3 == "."' input | wc -l
2