여러 매개변수와 함께 grep -v 사용

여러 매개변수와 함께 grep -v 사용

이 작업을 수행하는 더 쉬운 방법이 있나요? grep -v foo file | grep -v bar

egrep을 사용하는 매우 우아한 방법이 있을 수 있지만 일반 old grep을 사용하는 것은 어떻습니까?

편집: grep -v 'foo\|bar' fileGNU 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기본 기능을 얻을 수 있습니다.grepPATH

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 standardsSolaris 시스템 도 참조하십시오 .

관련 정보