이 작업을 수행하는 더 쉬운 방법이 있나요?
grep -v foo file | grep -v bar
egrep을 사용하는 매우 우아한 방법이 있을 수 있지만 일반 old grep을 사용하는 것은 어떻습니까?
편집: grep -v 'foo\|bar' file
GNU grep에서만 작동하는 것 같습니다. 저는 솔라리스를 사용하고 있습니다. 해결책이 있나요?
답변1
일반적으로 볼 수 있듯이 옵션이 아닌 첫 번째 인수 대신 각 표현식에 인수를 grep
전달하여 단일 명령으로 여러 테스트를 수행 할 수 있습니다 .-e
$ grep -v -e foo -e bar file
이는 명령이 수행하는 것과 동일한 작업을 보여줍니다. 즉, file
"foo"나 "bar"가 포함되지 않은 행을 인쇄합니다.
-v
이를 제거하면 논리 연산도 변경된다는 점을 기억하세요 . "foo"가 포함된 모든 행을 가져옵니다.또는"술집".
답변2
grep -Ev 'word1|word2'
잘 작동해야 해
답변3
매개변수 확장을 위해 중괄호를 사용할 수도 있습니다.
grep -v -e{foo,bar}
이는 다음과 사실상 동일합니다.
grep -v -e foo -e bar
(이 댓글을 달기에는 평판 포인트가 부족합니다.)
답변4
Solaris 11.4에서 PATH
기본 설정보다 약간 더 유용한 명령줄 도구를 선택하도록 변수를 올바르게 설정하면 다음을 사용할 수 있습니다.
grep -E -v 'foo|bar' file
이렇게 설정하면 더욱 강력한 grep
기본 기능을 얻을 수 있습니다.grep
PATH
PATH=$(/usr/xpg6/bin/getconf PATH):$PATH
PATH
기본 Solaris 11.4 시스템에서는 기존 변수 값 앞에 다음 경로가 추가됩니다.
/usr/xpg6/bin:/usr/xpg4/bin:/usr/bin:/opt/developerstudio12.5/bin:/opt/solarisstudio12.4/bin
man standards
Solaris 시스템 도 참조하십시오 .