grep
これら2つの単語のうちの1つだけが行に表示され、同じ行にある場合は、表示されていない2つの単語のうちの1つを含む行のみを表示したいと思います。
これまで試しましたが、 grep pattern1 | grep pattern2 | ...
期待した結果が得られませんでした。
ベストアンサー1
それ以外の道具はgrep
行く道です。
たとえば、Perlを使用すると、コマンドは次のようになります。
perl -ne 'print if /pattern1/ xor /pattern2/'
perl -ne
stdin の各行に指定されたコマンドを実行します。この場合、一致する場合は行を印刷します。つまり、/pattern1/ xor /pattern2/
あるパターンは一致しますが、他のパターンは一致しません(XOR)。
これはパターンの順序に関係なく動作し、grep
複数の呼び出しよりもパフォーマンスが高く入力が少なくなります。
または、より短くawkを使用してください。
awk 'xor(/pattern1/,/pattern2/)'
または、以下のないawkバージョンの場合xor
:
awk '/pattern1/+/pattern2/==1`