Grep - ^(\s*$) 및 ^\s*$

Grep - ^(\s*$) 및 ^\s*$

공백만 있는 필드를 검색하고 싶습니다. 이 두 명령은 계산할 때 다른 결과를 제공합니다.

grep "^\s*$" -E -c
grep "^(\s*$)" -E -c

또 다른 한가지. "단지 공백 또는 무언가"를 말하는 올바른 방법은 무엇입니까?

grep "^(\s*$|STRING)" -E -c

또는

grep "(^\s*$|^STRING)" -E -c

아니면 동등합니까?

답변1

일반은 grep이해하지 못 \s하거나 괄호로 묶습니다. (*) grep -P가능하다면 원하는 것이 무엇인지 또는 grep -E/ 라고 egrep적고 (어디가 ; 없으면 이해 가 안 됨 ). 또한 큰따옴표를 사용하면 일부 셸에서는 만 처리 하고 그대로 둡니다 . 실제로 변수를 삽입해야 하는 경우가 아니면(예 : 중간 인수에서 따옴표 전환) 셸에서 정규식에 작은따옴표를 사용해야 합니다.\s[ ^I]^ITabgrep-P\t\ss'^\s*'"$foo"'\s+\('

두 번째 예의 대안( -P큰따옴표 대신 작은따옴표 사용)도 동일한 작업을 수행합니다. 전자는 grep많이 역추적하지 않기 때문에 기술적으로 더 좋지만 실제로는 중요하지 않습니다.

(*) 현학적: 백슬래시 괄호가 작동합니다. 다시 작은따옴표가 필요하므로 쉘이 백슬래시를 먹지 않습니다. egrep일반적으로 더 쉽습니다.

관련 정보