首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件操作: shell脚本查找和增量

文件操作: shell脚本查找和增量
EN

Stack Overflow用户
提问于 2010-02-08 19:47:27
回答 4查看 1.4K关注 0票数 0
代码语言:javascript
复制
 #something here
 port 4444

 #something here

 port 4444

所以我有像上面这样的文件,我会找到带有单词"port“的行,并将它旁边的数字(数字可以是任何数字-不一定固定在4444)递增1。

例如,结果文件的格式应为

代码语言:javascript
复制
 #something here
 port 4444

 #something here

 port 4445

任何想法,我认为我们需要使用sed,但不确定是否增加它。

编辑:再次抱歉,我认为我得到了基于sed的答案,所以没有考虑位置。下面是确切的文件内容

代码语言:javascript
复制
$cat file
data dev-1
type client
option type tcp
option host 99.160.131.163
option nodelay on
option port 6996
end

data dev-2
type client
option type tcp
option host 99.160.131.164
option nodelay on
option port 6996
end

为了不方便,我想更改端口号并再次递增it.Sorry。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-08 19:56:00

代码语言:javascript
复制
$ awk 'f && $2=="port"{ $NF=num} $2=="port"{ num=$NF+1; f=1 } 1 ' file
data dev-1
type client
option type tcp
option host 99.160.131.163
option nodelay on
option port 6996
end

data dev-2
type client
option type tcp
option host 99.160.131.164
option nodelay on
option port 6997
end
票数 2
EN

Stack Overflow用户

发布于 2010-02-08 19:52:01

代码语言:javascript
复制
port=444
((port+=1))
echo $port

参考The Double-Parentheses Construct

票数 1
EN

Stack Overflow用户

发布于 2010-02-08 19:54:45

我会使用awk

代码语言:javascript
复制
awk '
    BEGIN{p=-1}
    { if($2=="port"){if(p==-1){p=$3}else{p++};print $1,$2,p} else {print} }' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2221298

复制
相关文章

相似问题

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