+ 및 공백을 제외한 다른 모든 문자를 찾는 방법

+ 및 공백을 제외한 다른 모든 문자를 찾는 방법

grep을 사용하여 +와 공백을 제외한 다른 문자가 포함된 줄을 찾으려고 합니다.

나는 사용해 보았습니다.

grep [^+]

하지만 텍스트 파일로 테스트하면 다음과 같습니다.

++++++++
++++++++
+  ++ ++

3개의 빈 줄을 반환합니다.

-c 옵션이 3을 반환했기 때문에 공백과 줄 바꿈이 제외될 수 있다고 생각하여 시도해 보았습니다.

grep -c [^+\ ]그리고grep -c [^+\n\ ]

둘 다 여전히 나에게 3을 제공합니다.

나도 시도했다

grep -v [+]

이 코드는 위의 텍스트 파일에서 작동하지만 +와 다른 문자가 혼합된 줄을 감지하려면 여전히 이 코드가 필요합니다.

예를 들어 +1+++++검색에도 포함되어야 하지만 제외됩니다.

내가 무엇을 놓치고 있나요?

명확히 하기 위해 다음과 같은 텍스트 파일에서:

++++++++
+  ++ ++
+1     +
abcd fgh
++++++++

나는 그것을 돌려받고 싶다

+1     +
abcd fgh

답변1

당신의 패턴을 인용해보세요! 이것은 잘 작동합니다:

$ grep '[^+]' file
+  ++ ++

따옴표를 사용하지 않고(일치하지 않는 파일) 쉘에서 처리하는 경우, 귀하의 파일은 [^+]glob 범위 패턴으로 해석되며 glob과 일치하는 파일 이름을 볼 수 있습니다.+grep

대부분의 셸 구현에서는 ^를 [^[:space:]]와 같은 범위 부정 문자로 사용할 수도 있습니다. (통과하다)

공백도 제외하려면 [^+ ]다음 패턴을 사용하십시오.

$ grep '[^+ ]' file2
+1     +
abcd fgh

다음을 사용하여 쉘이 명령을 해석하는 방법을 확인할 수 있습니다 set -x.

set -x
grep [^+] file

관련 정보