shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写? 10
比如我现在有一个文件:subnet192.168.1.0netmask255.255.255.0{route192.168.1.100192.168.1.200}在这个文...
比如我现在有一个文件:
subnet 192.168.1.0 netmask 255.255.255.0 {
route 192.168.1.100 192.168.1.200
}
在这个文件中 我需要将192.168.1.0替换成$ip
之后再脚本中
read ip
但是由于这个文件每次执行脚本的时候都不确定所以不能使用
sed -i 's/192.168.1.0/'"$ip"'/' /mnt/file
我想直接能通过这个192.168.1.0在文件中的位置来确定,因为这个东西在文件中的位置是不会变的。各位大神门 有没有什么办法呀?
有一个想法 可不可以用awk获取到subnet后面的这一段ip 然后给一个新的变量呢?
例如我设定一个变量a
a=awk**************
问题是这***********应该怎么写? 展开
subnet 192.168.1.0 netmask 255.255.255.0 {
route 192.168.1.100 192.168.1.200
}
在这个文件中 我需要将192.168.1.0替换成$ip
之后再脚本中
read ip
但是由于这个文件每次执行脚本的时候都不确定所以不能使用
sed -i 's/192.168.1.0/'"$ip"'/' /mnt/file
我想直接能通过这个192.168.1.0在文件中的位置来确定,因为这个东西在文件中的位置是不会变的。各位大神门 有没有什么办法呀?
有一个想法 可不可以用awk获取到subnet后面的这一段ip 然后给一个新的变量呢?
例如我设定一个变量a
a=awk**************
问题是这***********应该怎么写? 展开
3个回答
展开全部
oldip=`cat /mnt/file | grep "subnet" | awk '{print $2}'` //取得那个位置的ip
sed -i "s/$oldip/\$ip/" /mnt/file //替换为新的IP
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是192.168.1.0会变但是他所在的行数不变的意思吗
sed '行数s/xxxx/bbbb/' aaa.file
sed '行数s/xxxx/bbbb/' aaa.file
追问
sed '行数s/xxxx/bbbb/' aaa.file
所在行是不会变的 但是问题在于xxxx会变
有没有什么方法可以替换的时候不用到xxxx?直接使用xxxx在这一行所在的位置这样可以做到吗?
追答
sed '行数/c subnet $ip netmask 255.255.255.0 {' file
看看行不行
或者
sed '行数s/.*/subnet $ip netmask 255.255.255.0 {' file
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询