我正在编写一个脚本,要求我在配置文件的特定部分添加行.例如
之前:
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
Run Code Online (Sandbox Code Playgroud)
后:
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
Run Code Online (Sandbox Code Playgroud)
如您所见,添加了一个新行.我的bash脚本如何插入该行?我猜我需要使用sed.
哇,这个真的有我.我想在这里需要一些棘手的sed技能.这是我试图替换的命令文本的输出值:
...
fast
n : abstaining from food
Run Code Online (Sandbox Code Playgroud)
我想要替换它的价值是:
...
Noun
: abstaining from food
Run Code Online (Sandbox Code Playgroud)
事实证明这是我认为的诡计.因为'fast'被列出了很多次,因为它列在行的开头的其他地方.所以我想出了这个来定义范围:
sed '/fast/,/^ n : / s/fast/Noun/'
Run Code Online (Sandbox Code Playgroud)
我认为会这样做,但是......不幸的是,这并没有结束替换,这场比赛后的其余输出被Noun取代.比赛结束后如何让sed停止更换?更好的是,我可以找到两行模式匹配并替换它吗?