我想从 1000 开始增加端口号。我知道如何在使用此命令为它们分配编号时使所有端口为 0
sed 's/port [0-9]\{1,5\}/port 0/g'
但不知道如何做相反的事情。我必须在多个脚本文件中的 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
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
k=1000
m=$(echo "$k\\";printf '%s' {0..9})
sed -En "
1{x;s/.*/$m/;x;}
/local-ip/!{p;d;}
G
s/(port )0( .*)\n(.*)\n.*/\1\3\2/
p;g;trst;:rst
# port+1
s/([0-8])(\n.*\1(.))/\3\2/;h;t
s/(9+)\n/_&/
:a;s/(_9*)9(0*\n)/\10\2/;ta
s/^_/0&/
s/(.)_(0+\n.*\1(.))/\3\2/
h
" file
输出:
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
对于增量 1,我们必须处理两件事。lsd 是非 9 还是连续的 9。如果是前者,我们只需将 lsd 替换为其下一个更高的数字。在后者的情况下,我们将所有 lsd 9s 更改为 0s,并用下一个更高的数字替换邻居。然后重新存储以备下一次迭代
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句