首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于更改IP和保存新文件的shell脚本

用于更改IP和保存新文件的shell脚本
EN

Stack Overflow用户
提问于 2012-04-17 13:40:37
回答 4查看 597关注 0票数 1

我有一个包含不同IP地址的文本文件。我需要写一个脚本来找到与IP的行(还有其他行),并增加最后一个数字为1。这应该做50次!

这意味着将有50个新文件需要保存。我不想使用逻辑转到行号并替换特定的字符。

同样,文件名也存在于文件中,应该再次加1。我正在使用sed,但无法实现正确的循环和选项。

输入文件为example1:

代码语言:javascript
复制
 'name example101' 
'ip-address  10.255.255.13'
state enabled 
 'ip-address 10.255.253.45' 
'ip-address 10.255.255.13' 
'ip-address 10.0.0.130'

第一个新文件是example102 (最后一个将是example150):

代码语言:javascript
复制
 'name example102' 
'ip-address  10.255.255.14'
state enabled 
 'ip-address 10.255.253.46' 
'ip-address 10.255.255.14' 
'ip-address 10.0.0.131'
EN

回答 4

Stack Overflow用户

发布于 2012-04-17 14:01:35

要增加IP地址,可以使用下面的regex:

代码语言:javascript
复制
perl -lpe 's/((\d{1,3}\.){3})(\d{1,3})/$1 . ($3 + 1)/eg' FILE

要增加'name example101‘,你可以尝试一个类似的表达式。

票数 2
EN

Stack Overflow用户

发布于 2012-04-17 22:26:41

使用?!忽略特定ip

代码语言:javascript
复制
perl -lpe 's/((ip-address\s+(?!10\.255\.253\.45)((\d{1,3}\.){3}))(\d{1,3}))/$2.($5 + 1)/eg;s/(example)(\d{3})/$1.($2 + 1)/eg;' FILE

(?!10\.255\.253\.45)部件中添加要忽略的ip

更新:添加了部分s/(example)(\d{3})/$1.($2 + 1)/eg;,以增加输入字符串example101,使其成为example102。

票数 0
EN

Stack Overflow用户

发布于 2012-04-17 23:36:01

在Vim中,我可以在几秒钟内以交互方式完成此操作。在Vim中,Ctrl-A递增光标下的数字。搜索IP地址,转到最后一个八位字节,递增。在寄存器a下的键盘宏中记录,以@a身份调用,然后通过按住@@键重复N次。

以下是准确的击键操作:

开始录制:

代码语言:javascript
复制
qa

搜索下一个IPv4地址的起始地址:

代码语言:javascript
复制
 /\([0-9]\+\.\)\{3\}[0-9]\+[Enter]

跳到最后一个二进制八位数之前的点(向前3倍到点):

代码语言:javascript
复制
 3f.

增量:

代码语言:javascript
复制
 Ctrl-A

完成录制:

代码语言:javascript
复制
 q

现在,再次运行宏:

代码语言:javascript
复制
 @a

重复(按住@键自动重复):

代码语言:javascript
复制
 @@

如果你注意到你已经编辑了一个IP,你不应该只使用u来多次撤销,跳过它,然后从那里开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10185726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档