জিএনইউ সহ 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
না করে যদি আপনি কিছুটা জটিল হয়ে ওঠেন ।sed
sed
\<
\>
awk