:シェルスクリプトで空白の1を含む複数の行を検索する私は複数行にまたがると、空白行に置き換えるパターンを見つけるために、次のコマンドを使用しています
sed -n '1h; 1!H; ${ g; s/<Pattern1>\n<pattern2> //g p }' <file-name>
例えば、見つけます次のエントリが含まれているファイルtest.txtの内のパターン ジョン・ドウ
:
Mary
John
Doe
Simon
Henry
私はコマンドを使用します。
sed -n '1h; 1!H; ${ g; s/John\nDoe //g p }' test.txt
しかし、私は、すなわち、^ $文字を使用して、空白として第2のラインを持つパターンに対してこのコマンドを動作させるように見えることはできません。
このように、複数行のパターンを検索すると、メアリーの後に空白行が続き、一致するパターンは表示されません。したがって、次のコマンドは検索を行わず、したがって置換を行いません。
sed -n '1h; 1!H; ${ g; s/Mary\n^$ //g p }' test.txt
私は、ファイル内に複数のこのようなコマンドを保存し、それらを実行した場合
EDIT
はしかし、その後、最初の検索は罰金を通過、しかし、その後のパターンを探しに、私はsedのブランクからの出力を取得します。
私は、sed -n '1h; 1 H; $ {g; s/\ n // g p} 'sed -n' 1h; 1 H; $ {g; s/\ n // gp} 'をファイル内に挿入し、evalキーワードを使用してこのファイルの各行を実行すると、最初のsedが最初の複数行のパターン、つまりpattern1とそれに続くpattern2を置き換えます。ファイルにこれらのパターンが含まれているにもかかわらず空白の出力。すべての手がかりは?
これは動作します。ありがとう。 – Rishabh
しかし、このようなコマンドをファイルに複数格納して実行すると、最初の検索はうまくいきますが、後続のパターンの検索ではsedから空白の出力が得られます。 それは私が保管するなら、sed -n '1h; 1 H; $ {g; s/\ n // g p} 'sed -n' 1h; 1!H; $ {g; s/\ n // gp} 'をファイル内に挿入し、evalキーワードを使用してこのファイルの各行を実行すると、最初のsedが最初の複数行のパターン、つまりpattern1とそれに続くpattern2を置き換えます。ファイルにこれらのパターンが含まれているにもかかわらず空白の出力。すべての手がかりは? – Rishabh