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" *******************
*******
即数字按顺序排列,其他内容不变,请问如何实现呢? 展开
*******
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" *******************
*******
即数字按顺序排列,其他内容不变,请问如何实现呢? 展开
2个回答
展开全部
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
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
追问
像你这样直接复制粘贴别人的有意思吗?就为了蹭分?就算粘贴也用心点好吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如你文档所述:假定文件名为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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询