공백만 있는 필드를 검색하고 싶습니다. 이 두 명령은 계산할 때 다른 결과를 제공합니다.
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]
^I
Tabgrep
-P
\t
\s
s
'^\s*'"$foo"'\s+\('
두 번째 예의 대안( -P
큰따옴표 대신 작은따옴표 사용)도 동일한 작업을 수행합니다. 전자는 grep
많이 역추적하지 않기 때문에 기술적으로 더 좋지만 실제로는 중요하지 않습니다.
(*) 현학적: 백슬래시 괄호가 작동합니다. 다시 작은따옴표가 필요하므로 쉘이 백슬래시를 먹지 않습니다. egrep
일반적으로 더 쉽습니다.