shell脚本替换文本内容

shell脚本替换文本内容现有文件内容如下:*******index="6"*******************index="2"*******************... shell脚本替换文本内容现有文件内容如下:
*******
index="6" *******************
index="2" *******************
index="1" *******************
index="5" *******************
index="3" *******************
index="4" *******************
*******
我想通过shell脚本直接修改文件实现如下效果:
*******
index="1" *******************
index="2" *******************
index="3" *******************
index="4" *******************
index="5" *******************
index="6" *******************
*******
即数字按顺序排列,其他内容不变,请问如何实现呢?
展开
 我来答
草原上之狼
高粉答主

2018-02-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.9万
采纳率:93%
帮助的人:4028万
展开全部
1、按=分割取第二列
cat $file1|grep mqserver|awk -F= '{print $2}'`
2、直接替换文件内容
sed -i "s/127.0.0.1/192.168.1.1/" file1
3、实例:
#!/bin/sh
file1=ip1.txt
file2=ip2.txt
IP1=`cat $file1|grep mqserver|awk -F= '{print $2}'`
IP2=`cat $file2|grep ip|awk -F= '{print $2}'`
echo change $IP1 to $IP2.
sed -i "s/$IP1/$IP2/" $file1
more $file1
追问
像你这样直接复制粘贴别人的有意思吗?就为了蹭分?就算粘贴也用心点好吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinxingvenus
2018-02-25 · TA获得超过4790个赞
知道大有可为答主
回答量:2703
采纳率:64%
帮助的人:3172万
展开全部

如你文档所述:假定文件名为test.txt

sort  -nk 2 -t '"' test.txt >testnew.txt
追问
你好,刚才试了下sort命令,结果是把所有的行按照数字顺序重新排列了,我现在想要达到的效果是每行的顺序不变,只是index里面的数字从1开始递增,比如利用变量自增,昨天试过用sed命令,但如何用变量自增去替换原来的数字不太清楚,请问有办法吗?
追答

有一个笨办法,你试试

awk -F'"' '{if ($2 ~/[0-9]+/){print $0}}' test.txt |awk -F'"' '{OFS="\""} $2 ~/[0-9]+/{$2=NR;print $0}'  >testnew.txt

awk -F'"' '{if ($2 ~/[0-9]+/){print $0}}' test.txt |awk -F'"' '{OFS="\""}{for(i=1;i<=NR;i++){$2=i}{print $0}}'  >testnew.txt
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式