我正在尝试使用sed
实现增量计数器我可能错了,但是sed
是否可能?
file.txt包含以下
127.0.0.1
我想在file.txt
上运行sed,所以每次使用i++
增加数字时所以如果我在同一个文件上运行sed,那么127.0.0.2
就这样开启。< / p>
我不想使用任何类型的while循环等。只需使用sed
或awk
是否可能?
答案 0 :(得分:2)
您可以选择具有IP地址处理模块的语言,例如:
$ cat file.txt
192.168.1.254
$ ruby -ripaddr -i -lne 'puts IPAddr.new($_).succ' file.txt
$ cat file.txt
192.168.1.255
$ ruby -ripaddr -i -lne 'puts IPAddr.new($_).succ' file.txt
$ cat file.txt
192.168.2.0
答案 1 :(得分:2)
$ cat file
127.0.0.1
$ awk 'BEGIN{FS=OFS="."} {$NF=$NF+1} 1' file
127.0.0.2
答案 2 :(得分:1)
使用gnu sed:
sed -i -r 's/(.*)([^.]+)$/echo \1$((\2+1))/e' file
以下是测试结果:
$cat file
127.0.0.1
$ sed -i -r 's/(.*)([^.]+)$/echo \1$((\2+1))/e' file
$ cat file
127.0.0.2
$ sed -i -r 's/(.*)([^.]+)$/echo \1$((\2+1))/e' file
$ cat file
127.0.0.3
答案 3 :(得分:0)
sed 's/9$/10/;t
h;y/12345678/23456789/;G;s/.*\(.\)\n\(.*\)./\2\1/'
限于.1 - &gt; .10在评论中定义