当前位置: 技术问答>linux和unix
请教一个文本过滤的问题
来源: 互联网 发布时间:2016-05-26
本文导语: 有一个文本内容是这样的: $TTL 1m @ IN SOA ns1.localhost.cn root.ns1.localhost.cn. ( 2009030310 ; Serial 108 ...
有一个文本内容是这样的:
$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操作的?希望大家能够帮助解答一下哈
$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操作的?希望大家能够帮助解答一下哈
|
我想这个可以看作是sed替换的一个应用
你的替换不一定是在一个sed语句中完成吧,这样你可以先把这个数字提取出来(不一定用sed工具,还可以考虑用awk工具,或者cut工具),然后在外面用变量完成加1操作,再替换。
这个肯定是可以实现的,我操作过类似的应用。大致步骤是
1. awk 工具(cut)工具提取出这个数字到一个变量a
2. 变量b=变量a+1
3. 构造sed内部替换的操作语句
变量c="s#${a}#${b}#"
4. sed -i ${c} 文件名
你的替换不一定是在一个sed语句中完成吧,这样你可以先把这个数字提取出来(不一定用sed工具,还可以考虑用awk工具,或者cut工具),然后在外面用变量完成加1操作,再替换。
这个肯定是可以实现的,我操作过类似的应用。大致步骤是
1. awk 工具(cut)工具提取出这个数字到一个变量a
2. 变量b=变量a+1
3. 构造sed内部替换的操作语句
变量c="s#${a}#${b}#"
4. sed -i ${c} 文件名