複数行モードで最後までファイルの内容を表示する方法パターン自体を含む?
しばらく前に同様の質問をしましたが、内容が違うので、別の新しい質問に載せてみようかと思っています。だから、単にそれのためにこの重複項目を表示しないでください!
たとえば、次のテキストファイルがあるとします。
cat
dog
fox
cow
dove
bird
bunny
gnu
hen
dove
bird
buffalo
私のスキーマが次のような場合:
dove
bird
bunny
私が得たいものは:
dove
bird
bunny
gnu
hen
dove
bird
buffalo
私の実際のファイルはかなり大きいので、これを達成する方法が複数ある場合は、より速い方法を好みます。
ベストアンサー1
パターンが最初に表示されてから印刷を開始するのは簡単です。私が説明したのと同じ論理に従ってもう一つの答えしかし、いくつかの追加のロジックがあります。
解析.sed
/^dove$/ { # Match multi-line pattern
N # /
N # /
/\nbird\nbunny$/bb # When matched jump to label b
}
d # Restart with next line if no match
:b # \
n # Print the rest of the file
bb # /
次のように実行します。
sed -f parse.sed infile
またはポータブルシングルライナーで:
sed -n -e '/^dove$/{N;N;/\nbird\nbunny$/bb' -e '};d;:b' -e 'p;n;bb' infile
どちらの場合も出力:
dove
bird
bunny
gnu
hen
dove
bird
buffalo