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