grep로 한 단어를 제외하려면 어떻게 해야 하나요?
다음과 같은 것이 필요합니다.
grep ^"unwanted_word"XXXXXXXX
다음을 사용하여 할 수 있습니다.-v
(용)--invert-match
) 옵션은 다음과 같습니다.
grep -v "unwanted_word" file | grep XXXXXXXX
grep -v "unwanted_word" file
를 가지는 회선을 필터링 합니다.unwanted_word
그리고.grep XXXXXXXX
패턴이 있는 행만 나열됩니다.XXXXXXXX
.
편집:
당신의 코멘트를 보면, 모든 행이 리스트 되어 있는 것 같습니다.unwanted_word
이 경우 필요한 것은 다음과 같습니다.
grep -v 'unwanted_word' file
이 질문에서는 "단어와 일치하지만 다른 솔루션은 제외하는 방법"으로 이해했습니다.이 질문에서는 하나의 솔루션은 2개의 GREP로 구성되어 있습니다.원하는 "word1"을 찾는 첫 번째 GREP, "word2"를 제외한 두 번째 GREP:
grep "word1" | grep -v "word2"
내 경우:grep의 "word" 옵션으로는 사용할 수 없는 "plot"과 "#plot"을 구분할 필요가 있습니다(#은 영숫자가 아닙니다).
만약 당신이grep
에서 Perl 정규 표현을 지원합니다.-P
할 수 있는 옵션(bash의 경우, tcsh의 경우,!
):
grep -P '(?!.*unwanted_word)keyword' file
데모:
$ cat file
foo1
foo2
foo3
foo4
bar
baz
이제 모든 것을 나열해 봅시다.foo
제외하고foo3
$ grep -P '(?!.*foo3)foo' file
foo1
foo2
foo4
$
적절한 해결방법은grep -v "word" file
, 및 그awk
동등:
awk '!/word/' file
하지만, 만약 당신이 원하는 더 복잡한 상황이 생긴다면, 예를 들어,XXX
나타나다YYY
그럼 나타나지 말 것awk
여러 개의 파이프로 연결하는 대신 편리하다grep
s:
awk '/XXX/ && !/YYY/' file
# ^^^^^ ^^^^^^
# I want it |
# I don't want it
더 복잡한 것도 말할 수 있어요.예를 들어 다음과 같습니다.이 행에 다음 중 하나가 포함되었으면 합니다.XXX
또는YYY
, 그러나 아니다.ZZZ
:
awk '(/XXX/ || /YYY/) && !/ZZZ/' file
기타.
grep -v를 사용하여 일치 항목 반전:
grep -v "unwanted word" file pattern
grep 에는, 「-v」또는 「--syslog-match」옵션이 준비되어 있습니다.
예.
grep -v 'unwanted_pattern' file_name
그러면 file_name 파일에서 모든 행이 출력됩니다. file_name 파일에는 'unwanted_pattern'이 없습니다.
폴더 내의 여러 파일에서 패턴을 검색하는 경우 다음과 같이 재귀 검색 옵션을 사용할 수 있습니다.
grep -r 'wanted_pattern' * | grep -v 'unwanted_pattern'
여기서 grep은 현재 디렉토리 내의 모든 파일에 있는 'wanted_pattern'의 모든 항목을 나열하고 두 번째 grep에 전달하여 'unwanted_pattern'을 필터링합니다.'|' - 파이프는 셸에 왼쪽 프로그램의 표준 출력('p - r 'pattern' *)을 오른쪽 프로그램의 표준 입력('p - v 'pattern')에 연결하도록 지시합니다.
그-v
옵션에서는 패턴과 일치하지 않는 행이 모두 표시됩니다.
grep -v ^unwanted_word
를 사용하여 루트("/") 마운트 지점을 제외했습니다.grep -vw "^/"
.
# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}'
/
/root/.m2
/root
/var
# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}' | grep -vw "^/"
/root/.m2
/root
/var
파일이 잔뜩 들어 있는 디렉토리가 있어요"speedup" 문자열이 포함되지 않은 파일을 모두 찾아서 다음 명령을 성공적으로 사용했습니다.
grep -iL speedup *
언급URL : https://stackoverflow.com/questions/4538253/how-can-i-exclude-one-word-with-grep
'programing' 카테고리의 다른 글
Add-PSSnapin을 호출하기 전에 PowerShell 스냅인이 이미 로드되었는지 확인하는 방법 (0) | 2023.04.21 |
---|---|
Bash if 문의 정규식 일치 (0) | 2023.04.21 |
IIS8의 WCF. *.svc 핸들러 매핑이 작동하지 않음 (0) | 2023.04.21 |
UITableViewCell은 흰색 배경을 표시하며 iOS7에서는 수정할 수 없습니다. (0) | 2023.04.21 |
WPF UI 렌더링 속도를 향상시키는 방법 (0) | 2023.04.16 |