জিএনইউ সহ awk:
$ printf '%s\n' {foo,bar}{bar,foo} neither | gawk 'xor(/foo/,/bar/)'
foofoo
barbar
বা বহনযোগ্য:
awk '((/foo/) + (/bar/)) % 2'
একটি সঙ্গে 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না করে যদি আপনি কিছুটা জটিল হয়ে ওঠেন ।sedsed\<\>awk