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
그 당신이하지 않는 한 조금 복잡하게 sed
GNU처럼 구현을 sed
지원하는 \<
/ \>
GNU와 같은 단어 경계로 awk
한다.