8

文字列一致+2行の後に改行を追加したいと思います。

ここに私のファイルがあります:

allow-hotplug eth0
auto eth0
iface eth0 inet static
address 172.16.2.245
netmask 255.255.254.0
gateway 192.168.1.1

allow-hotplug eth1
#auto eth1
iface eth1 inet static
address 192.168.0.240
netmask 255.255.255.0

iface eth2 inet static
address 192.168.2.240
netmask 255.255.255.0

found 'iface eth1' + 2 行の後に 'gateway 192.168.1.1' を追加したい。

例: sed コマンドを実行した後に取得する必要があるもの

allow-hotplug eth0
auto eth0
iface eth0 inet static
address 172.16.2.245
netmask 255.255.254.0
gateway 172.16.2.254

allow-hotplug eth1
#auto eth1
iface eth1 inet static
address 192.168.0.240
netmask 255.255.255.0
gateway 192.168.1.1

iface eth2 inet static
address 192.168.2.240
netmask 255.255.255.0

2行後に検索して移動する方法、特定の文字列の後に行を追加する方法などは知っていますが、この2つの操作を組み合わせることはできません。ステフ

4

4 に答える 4

11

これはうまくいくようです:

sed '/^iface eth1/{N;N;s/$/\ngateway 192.168.1.1/}' input.txt

-iにオプションを追加してsed、結果を に保存しinput.txtます。

于 2013-04-25T13:00:48.803 に答える
1

「sed」を使用するように依頼しましたが、「Kent」は「awk」を使用しています。例に必要な処理を行う sed スクリプトを次に示します。より一般的に言えば、sed スクリプトの 1 行目には任意の文字列を含めることができ、sed スクリプトの 5 行目には任意の文字列を含めることができます。次のスクリプトを x.sed などのファイルに入れ、スペースやタブを追加しないでください。

    /iface eth1/{
    n
    n
    a\
    gateway 192.168.1.1
    }

次に、コマンドラインでこのように実行します。

    sed -f x.sed "myinputfile" > "myoutputfile"
于 2013-04-25T13:10:32.083 に答える
0

そのブロックの最後に行を追加したい場合は、これを試してください:

awk -v RS="" -v ORS="\n\n" '/iface eth1/{$0=$0"\ngateway 192.168.1.1"}1' file 

あなたのファイルで:

kent$  cat file
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 172.16.2.245
netmask 255.255.254.0
gateway 192.168.1.1

allow-hotplug eth1
#auto eth1
iface eth1 inet static
address 192.168.0.240
netmask 255.255.255.0

iface eth2 inet static
address 192.168.2.240
netmask 255.255.255.0

kent$  awk -v RS="" -v ORS="\n\n" '/iface eth1/{$0=$0"\ngateway 192.168.1.1"}1' file
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 172.16.2.245
netmask 255.255.254.0
gateway 192.168.1.1

allow-hotplug eth1
#auto eth1
iface eth1 inet static
address 192.168.0.240
netmask 255.255.255.0
gateway 192.168.1.1

iface eth2 inet static
address 192.168.2.240
netmask 255.255.255.0
于 2013-04-25T12:49:32.483 に答える