分页: 1 / 1

如何替換文本文件中的ip地址

发表于 : 2012-05-27 0:41
tcguangda
ifconfig

eth0 Link encap:以太网 硬件地址 40:61:86:62:72:b2
inet 地址:192.168.0.168 广播:192.168.0.255 掩码:255.255.255.0
inet6 地址: fe80::4261:86ff:fe62:72b2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:151136 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:140726 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:149009770 (149.0 MB) 发送字节:18440180 (18.4 MB)
中断:45

lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 跃点数:1
接收数据包:978 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:978 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:103718 (103.7 KB) 发送字节:103718 (103.7 KB)

ppp0 Link encap:点对点协议
inet 地址:222.175.62.207 点对点:222.175.62.1 掩码:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 跃点数:1
接收数据包:144756 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:130682 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:3
接收字节:140200246 (140.2 MB) 发送字节:14536673 (14.5 MB)

想截取这个命令的输出结果
ppp0 Link encap:点对点协议
inet 地址:222.175.62.207 点对点:222.175.62.1 掩码:255.255.255.255

这个部分的222.175.62.207

然后把222.175.62.207替换到 a文本中 a.b.c.d

对linux命令行一头乌水,呵呵,定向和管道不知道怎么用!

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 0:45
枫叶饭团
grep+sed差不多吧,但是我不怎么会。我可以用py写个,如果你要的话。。。明天再说吧

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 1:09
tcguangda
谢谢指点!

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 1:19
royclark
一个糟糕的实现。 :em02

代码: 全选

ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2
上面只能打印 ip 。要把它替换 a 中的 a.b.c.d 就不懂了。要是 a 是空的还好办。

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 1:34
lilydjwg
royclark 写了:一个糟糕的实现。 :em02

代码: 全选

ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2
上面只能打印 ip 。要把它替换 a 中的 a.b.c.d 就不懂了。要是 a 是空的还好办。
[bash]ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2 | xargs -I{} sed -i 's/a\.b\.c\.d/{}/' a[/bash]
或者不用 xargs:
[bash]sed -i "s/a\\.b\\.c\\.d/$(ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2)/" a[/bash]

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 1:49
tcguangda
太感谢各位指点了,要好好学习命令行了,真的好厉害!

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 1:58
枫叶饭团
看来是得好好地看看man了

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 7:34
cppking
royclark 写了:一个糟糕的实现。 :em02

代码: 全选

ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2
上面只能打印 ip 。要把它替换 a 中的 a.b.c.d 就不懂了。要是 a 是空的还好办。
其实这个命令已经到位了,楼主的意思其实就是把那个IP提取出来,至于格式,就是xxx.xxx.xxx.xxx
他写成a.b.c.d让大家产生了歧义

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 13:53
naturalaw
a.b.c.d
是一个ip格式吧。需求不明确,楼主现身吧!

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 14:02
lilydjwg
cppking 写了:
royclark 写了:一个糟糕的实现。 :em02

代码: 全选

ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2
上面只能打印 ip 。要把它替换 a 中的 a.b.c.d 就不懂了。要是 a 是空的还好办。
其实这个命令已经到位了,楼主的意思其实就是把那个IP提取出来,至于格式,就是xxx.xxx.xxx.xxx
他写成a.b.c.d让大家产生了歧义
错!不是大家产生了歧义,而是楼主的表述本身有歧义。请不要使用病句,虽然它的后果没有歧义句那么严重。

Re: 请教一下有一件事想用命令来解决,不知道该怎么做!

发表于 : 2012-05-27 17:20
tcguangda
不好意思,表述是有点问题

其实是一个命令行文件linux下面配置isatap a.sh,内容如下
sudo ip tunnel del is_sjtu
sudo ip tunnel add is_sjtu mode isatap remote 202.112.26.246 local a.b.c.d
sudo ip link set is_sjtu up
sudo ip tunnel prl prl-default 202.112.26.246 dev is_sjtu
sudo ip -6 route add default via fe80::5efe:202.112.26.246 dev is_sjtu
sudo rdisc6 is_sjtu

因为每次上网拔号ip不一样,就想到替换,看了大家的帮助就直接写成如下就行了

sudo ip tunnel del is_sjtu
sudo ip tunnel add is_sjtu mode isatap remote 202.112.26.246 local $(ifconfig ppp0 | grep '\<inet\>' | awk '{print $2}' | cut -d ':' -f 2)
sudo ip link set is_sjtu up
sudo ip tunnel prl prl-default 202.112.26.246 dev is_sjtu
sudo ip -6 route add default via fe80::5efe:202.112.26.246 dev is_sjtu
sudo rdisc6 is_sjtu