본문의 질문
1
로 시작하고 뒤에 공백이 오는 줄을 선택하세요.
grep -c "^1\s" file grep -c "^1[[:space:]]" file
또한 개수를 제공합니다. 줄 수 (wc를 호출 할 필요 없음)
제목의 질문
A 1
아니라 뒤에 다른 숫자 (또는 아무것도 없음) :
grep -cE "^1([^0-9]|$)" file
하지만 위의 두 솔루션 모두 몇 가지 흥미로운 문제는 계속 읽으십시오.
사용자는 질문 본문에서 파일이 “탭으로 구분”되어 있다고 주장합니다.
구분자
tab
wi로 시작하는 줄 1
뒤에 탭 (명령의 실제 탭)이 나옵니다. 구분자가 공백 (또는 기타 또는 없음)이면 실패합니다.
grep "^1 " file
공백
1
뒤에 공백이 있습니다 (명령의 실제 공백). 구분 기호가 다른 경우 실패합니다. :
grep "^1 " file
탭 또는 공백
grep "^1( | )" file grep "^1[[:blank:]]" file
공백
더 유연한 옵션은 여러 개의 공백 (가로 및 세로) 문자를 포함하는 것입니다. [:space:]
문자 클래스 집합은
(공백), \t
(가로 탭 ), \r
(캐리지 리턴), \n
(개행), \v
(수직 탭 ) 및 \f
(양식 피드). 그러나 grep은 줄 바꿈과 일치 할 수 없습니다 (-z
옵션으로 만 피할 수있는 내부 제한). 구분 기호에 대한 설명으로 사용할 수 있습니다. \s
:
grep -c "^1[[:space:]]` file grep -c "^1\s" file
하지만이 옵션은 사용 가능한 GNU 속기를 사용할 수도 있습니다. 구분자가 콜론 :
또는 기타 구두점 문자 (또는 문자)와 같은 경우 실패합니다.
경계
또는, 숫자에서 “숫자가 아닌”경계로의 전환을 사용할 수 있습니다. 실제로 “[_[:alnum:]]
에없는 문자 (_a-zA-Z0-9
) “:
grep -c "^1\b" file # portable but not POSIX. grep -c "^1\>" file # portable but not POSIX. grep -wc "^1" file # portable but not POSIX. grep -c "^1\W" file # portable but not POSIX (not match only a `1`) (not underscore in BSD).
1로 시작하고 그 뒤에 구두점 문자가 오는 유효한 줄로 허용됩니다.
댓글
(즉, 게놈 데이터 없음). 그러나 어쨌든 실행 가능한 솔루션도 추가되었습니다.@St é phaneChazelas