Muh*_*yas -2 sed awk text-processing
我想从 1000 开始增加端口号。我知道如何在使用此命令为它们分配编号时使所有端口为 0
sed 's/port [0-9]\{1,5\}/port 0/g'
Run Code Online (Sandbox Code Playgroud)
但不知道如何做相反的事情。我必须在多个脚本文件中的 2k 行中更改它。
local-ip 155.165.170.10 port 0 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 0 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 0 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 0 remote-ip 155.16.241.11 port 3869
Run Code Online (Sandbox Code Playgroud)
local-ip 155.165.170.10 port 1000 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 1001 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 1002 remote-ip 155.16.241.11 port 3869
local-ip 155.165.170.10 port 1003 remote-ip 155.16.241.11 port 3869
Run Code Online (Sandbox Code Playgroud)
你应该能够做到awk
:
awk 'BEGIN{p=1000} $1=="local-ip"{$4=p++} 1' input.cfg > output.cfg
Run Code Online (Sandbox Code Playgroud)
这将解析所有以local-ip
(作为防止空行或注释行的小安全措施)开头的行,并将第 4 个字段(当前端口号)替换为连续增加的数字,从 1000 开始。
更新
由于您在评论中声明要对多个文件执行此操作,因此可以使用以下 shell 循环:
awk 'BEGIN{p=1000} $1=="local-ip"{$4=p++} 1' input.cfg > output.cfg
Run Code Online (Sandbox Code Playgroud)
这将遍历所有匹配的文件input{1..16}.cfg
,替换input
withoutput
以生成输出文件名n
,并将上述awk
程序应用于每个输入/输出对。请注意,端口号将在文件本地重新编号,即每个文件在端口 1000 处重新启动。
归档时间: |
|
查看次数: |
132 次 |
最近记录: |