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,替换inputwithoutput以生成输出文件名n,并将上述awk程序应用于每个输入/输出对。请注意,端口号将在文件本地重新编号,即每个文件在端口 1000 处重新启动。
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |