请教一个文本过滤的问题

技术传播 2009-03-27 09:22:01
有一个文本内容是这样的:
$TTL 1m
@ IN SOA ns1.localhost.cn root.ns1.localhost.cn. (
2009030310 ; Serial
108 ; Refresh
360 ; Retry
3600 ; Expire
360 ) ; Minimum
IN NS localhost.

IN NS ns1
MX 5 mx


ns1 IN A 218.77.130.173

我现在想要将 包含了Serial这一行的内容。中的2009030310 这个数字变成
它自己加一即:2009030311
请问 用Linux中的SED如何实现呢?
非常急

我有一个可以参考一下:
sed -i '/^ns1/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
\.[0-9]\{1,3\}/123/g' test

我现在的问题就是不知道怎么实现这个数字加1操作的?希望大家能够帮助解答一下哈
...全文
53 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifanernei 2009-03-27
  • 打赏
  • 举报
回复
sed好像不能直接加1吧,可以考虑分两步走,先过滤一次取出数字加1待用
再用sed替换
xdspower 2009-03-27
  • 打赏
  • 举报
回复
我想这个可以看作是sed替换的一个应用
你的替换不一定是在一个sed语句中完成吧,这样你可以先把这个数字提取出来(不一定用sed工具,还可以考虑用awk工具,或者cut工具),然后在外面用变量完成加1操作,再替换。
这个肯定是可以实现的,我操作过类似的应用。大致步骤是
1. awk 工具(cut)工具提取出这个数字到一个变量a
2. 变量b=变量a+1
3. 构造sed内部替换的操作语句
变量c="s#${a}#${b}#"
4. sed -i ${c} 文件名

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧