49

構成ファイルの特定の部分に行を追加する必要があるスクリプトを作成しています。例えば

前:

ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
ServerActors=UWeb.WebServer

後:

ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900
ServerActors=UWeb.WebServer

ご覧のとおり、新しい行が追加されています。私のbashスクリプトはどのように行を挿入できますか? 私はsedを使用する必要があると思います。

4

5 に答える 5

104

特定の文字列一致の後に行を追加する場合:

$ awk '/master.mplayer.com/ { print; print "new line"; next }1' foo.input
ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
new line
ServerActors=UWeb.WebServer
于 2013-08-16T15:07:34.183 に答える
4

特定の文字列が次のように一致した後、sedファイルに追加できます。filenamepattern

sed '/pattern/a some text here' filename

あなたの例では

sed '/master.mplayer.com/a \  new line' filename

(バックスラッシュは新しい行の最初のスペースをマスクするため、最初にスペースを追加できます)

ソース: https://unix.stackexchange.com/a/121166/20661

于 2016-11-15T14:42:23.093 に答える