`sed`を使用して試合後に行を挿入するにはどうすればよいですか?

How Insert Line After Match Using Sed



Linuxの便利で強力なコマンドの1つは、sedコマンドです。このコマンドは、一致に基づいて特定のテキストまたは行を挿入、更新、削除するなど、Linuxでさまざまなタイプのタスクを実行するために使用されます。 sedコマンドを使用して、さまざまな方法で文字列またはファイルにテキストを挿入できます。

このチュートリアルでは、文字列または行で一致するものを見つけた後に行を挿入する方法を示します。







文字列に行を挿入します

コマンドで定義されたパターンが文字列値の任意の部分と一致する場合、sedコマンドを使用して任意の文字列値の後に改行を挿入できます。



次の例は、特定の文字列が文字列値のどこかに存在する場合に、文字列値の後に改行を追加する方法を示しています。



例-1:一致するものを見つけた後、文字列に行を挿入します

次のコマンドは、文字列内のingを検索します。私はプログラミングが好きで、テキスト行も検索します。プログラミングは好きですか?検索文字列が存在する場合、文字列の後に挿入されます。





ここで、&文字は、文字列の後に行を挿入するために使用されます。

$捨てた 「私はプログラミングが好きです。」 | sed 's / inng /&プログラミングは好きですか?/'

次の出力は、inngが文字列に存在せず、文字列の後に行が挿入されていないことを示しています。




次のコマンドで検索します。文字列の中で、私はプログラミングが好きで、それは文字列の中に存在します。

$捨てた 「私はプログラミングが好きです。」 | sed 's / ing./&プログラミングは好きですか?/'

次の出力は、文字列の後に改行が追加されたことを示しています。

ファイルに行を挿入する

以下に説明するファイルで一致が見つかった後に行を挿入するには、2つの方法があります。 -iオプションを指定せずにsedコマンドを使用すると、ファイルの内容は変更されず、出力には改行が挿入されたファイルの内容が表示されます。一致するパターンがファイルに存在する場合は、sedコマンドで-iオプションを使用して、ファイルに新しい行を永続的に挿入する必要があります。

A.sedコマンドでaを使用する

aは、sedの検索パターンで使用して、検索パターンが一致する行の後、または特定の行番号の後に、ファイル内の1つ以上の行を追加できます。

B.sedコマンドでiを使用する

iをsedコマンドの検索パターンで使用すると、検索パターンが一致する行の前に1つ以上の行をファイルに挿入できます。

パターンに基づいてファイルに行を挿入します。

名前の付いたタブ区切りのテキストファイルを作成します products.txt 次の内容で、sedコマンドでの上記のフラグの使用法を示します。

products.txt

ID名

01ホイップクリーム

02ココアパウダー

03シュガー

04卵

05小麦粉

例-2:aを使用して特定の行番号の後に行を挿入します

次のコマンドは、sedコマンドで使用されたパターンに基づいて、products.txtファイルの特定の行番号の後に新しい行を追加する方法を示しています。

ここで、最初のコマンドはファイルの既存のコンテンツを表示します。 sedコマンドは、ファイルの最初の2行の後に、テキストb01ベーキングパウダーを追加します。最後のコマンドは、ファイルの内容が変更されているかどうかを確認するために使用されます。

$products.txt

$sed '2 a b01 tベーキングパウダー'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

例-3:aを使用して最後の行の後に行を挿入します

次のコマンドは、ファイルの最後の行の後に新しい行を追加する方法を示しています。最初と最後のコマンドは、sedコマンドの実行前後のファイルの既存の内容を表示します。 $記号は、ファイルの最後の行に言及するためにsedコマンドのパターンで使用されます。

$products.txt

$sed '$ a b01 tベーキングパウダー'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

例-4:aを使用してパターンを照合した後、ファイルの任意の場所に行を挿入します。

次のsedコマンドは、一致するパターンに基づいてファイルの任意の場所に新しい行を追加する方法を示しています。 sedコマンドで使用されるパターンは、s01で始まる行を検索し、その後に新しい文字列を追加します。ファイルの4行目はs01で始まり、その行の後に新しい行が挿入されます。

$products.txt

$sed '/^s01.*/a b01 tベーキングパウダー'products.txt

$products.txt

コマンドを実行すると、次の出力が表示されます。


次のsedコマンドは、Powderで終わる行を検索し、その後に新しい行を挿入します。ファイルの3行目はPowderで終わります。したがって、新しい行はその行の後に挿入されます。

$products.txt

$sed '/ Powder $ / a b01 tBaking Powder'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

例-5:を使用して、一致するパターンの後に複数の行を挿入します

次のsedコマンドは、一致するパターンに基づいてファイルのコンテンツ内に複数の行を追加する方法を示しています。

ここでは、パターンに従って、3行目の後に2行が追加されます。

$products.txt

$sed '/ ^ [a-c] / a b01 tベーキングパウダー nb02 tベーキングソーダ'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

例-6:Iを使用してパターンを照合した後に行を挿入する

$products.txt

$sed '/ cream / i b01 tBaking Powder'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

例-7:-iオプションを使用して、一致するパターンの後に永続的に行を挿入します

次のsedコマンドは、ファイルの内容を永続的に変更する方法を示しています。 iオプションをsedコマンドとともに使用して、パターンに基づいてファイルに新しい行を挿入します。

$products.txt

$sed -私 '/ e $ / a g01 tGhee'products.txt

$products.txt

上記のコマンドを実行すると、次の出力が表示されます。

結論:

パターンでsedコマンドを使用してファイルに2行以上を挿入する方法は、読者がパターンに基づいて一時的または永続的に行を挿入するためにこのコマンドを適用するのに役立つように、このチュートリアルで示されています。