没有任何循环程序的sed增量计数器

时间:2014-01-27 21:28:38

标签: linux sed awk counter

我正在尝试使用sed实现增量计数器我可能错了,但是sed是否可能?

file.txt包含以下

127.0.0.1

我想在file.txt上运行sed,所以每次使用i++增加数字时所以如果我在同一个文件上运行sed,那么127.0.0.2就这样开启。< / p>

我不想使用任何类型的while循环等。只需使用sedawk是否可能?

4 个答案:

答案 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在评论中定义