GNU로 awk:
$ printf '%s\n' {foo,bar}{bar,foo} neither | gawk 'xor(/foo/,/bar/)'
foofoo
barbar
또는 휴대용으로 :
awk '((/foo/) + (/bar/)) % 2'
A를 grep위한과 지원 -P(PCRE) :
grep -P '^((?=.*foo)(?!.*bar)|(?=.*bar)(?!.*foo))'
로 sed:
sed '
/foo/{
/bar/d
b
}
/bar/!d'
당신이 (어느 쪽이 없음을 전체 단어 만 고려할 경우 foo도 bar에 foobar또는 barbar예를 들어), 당신은 그 단어를 구분하는 방법을 결정해야합니다 것입니다. -w많은 grep구현 옵션 과 같이 문자, 숫자 및 밑줄 이외의 문자 가 있으면 다음과 같이 변경하십시오.
gawk 'xor(/\<foo\>/,/\<bar\>/)'
awk '((/(^|[^[:alnum:]_)foo([^[:alnum:]_]|$)/) + \
(/(^|[^[:alnum:]_)bar([^[:alnum:]_]|$)/)) % 2'
grep -P '^((?=.*\bfoo\b)(?!.*\bbar\b)|(?=.*\bbar\b)(?!.*\bfoo\b))'
들어 sed그 당신이하지 않는 한 조금 복잡하게 sedGNU처럼 구현을 sed 지원하는 \</ \>GNU와 같은 단어 경계로 awk한다.