別のファイルのキーワードの後に​​1つのファイルの行を挿入するには?

別のファイルのキーワードの後に​​1つのファイルの行を挿入するには?

次の内容を含むファイルがあります。

10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy

bc groupこのファイルの内容をホストファイルの行の後にホストファイルに挿入する必要があります。

サーバーのホストファイルにはすでに何百ものエントリがあります。 Bc はホストファイルのグループです。上記のファイルからIPアドレスとホスト名を読み、そのエントリをホストファイルヘッダーの下に置くコードが必要ですbc group

上記の新しいファイルは、ホストファイルのキーワードの後に​​作成する必要がありますbc group

たとえば、私のホストファイルに次の行が含まれているとします。

10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.63.71.136 bc2
10.63.71.214 bc3

ホストファイルを次に変換する必要があります。

10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy
10.63.71.136 bc2
10.63.71.214 bc3

最初のファイルのすべての行をbc groupホストファイルの行に追加してから、ホストファイルの残りの行を引き続き追加する必要があります。

ベストアンサー1

この試み:

sed '/^bc group$/ r file1' hostfile

このsedコマンドは、の行をhostfile出力にコピーし、次の行のすべてのfile1行を読み込みます(挿入)。bc grouphostfile

出力を別のファイルに保存するには、> newhostfile次のコマンドに追加します。

sed '/^bc group$/ r file1' hostfile > newhostfile

しかし、私はこの方法をお勧めします。つまり、バックアップにサフィックスを使用し、.bakファイルを適切に編集することです。

sed -i.bak '/^bc group$/ r file1' hostfile

bc groupが複数回表示されると、hostfile行はfile1複数回挿入されます。

おすすめ記事