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