相关疑难解决方法(0)

Bash:在特定位置的文件中插入一行

我正在编写一个脚本,要求我在配置文件的特定部分添加行.例如

之前:

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.

linux bash

40
推荐指数
4
解决办法
7万
查看次数

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停止更换?更好的是,我可以找到两行模式匹配并替换它吗?

linux sed

3
推荐指数
1
解决办法
7459
查看次数

标签 统计

linux ×2

bash ×1

sed ×1