LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1099|回复: 6

请教一个问题 望给出详细的答案 最好再附一个例子 谢谢

[复制链接]
发表于 2007-11-8 18:02:01 | 显示全部楼层 |阅读模式
cat iplist.conf|sed  's/192.168.0.\(.*\)/192.168.1.\1/g'

上边句子末尾处 \1 具体是什么意思,查了下好像说是IP地址的每一个段,但不知道要怎么用,前辈们给点详细的解释,最好举个例子  不慎感激  ^_^
发表于 2007-11-8 23:35:34 | 显示全部楼层
这种问题, 自己一试就可以知道结果

\1用于取得第1个()捕获的字符串
\2用于取得第2个()捕获的字符串
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-9 10:12:48 | 显示全部楼层
谢谢楼上前辈指点 ^_^
cat iplist.conf|sed 's/192.168.0.\(.*\)/192.168.1.\1/g'
这句话是否是说 将iplist.conf 文件中的IP地址192.168.0.*用IP地址192.168.1.*代替
但是不明白 (.*\) 和 \1 具体的意思.
我有个文件1.txt是这样的
192.162.1.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.1.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.1.235---[14/Aug/2007:09:34
192.162.1.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.1.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
执行了sed -e 's/192.168.1.\(.*\)/192.162.2.\1/g' 1.txt后变成了下列
192.162.2.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.2.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.2.235---[14/Aug/2007:09:34
192.162.2.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
192.162.2.235---[14/Aug/2007:09:34
236.82.28.12---[14/Aug/2007:09:34
明显是1.txt中IP地址第三位1被2替代了,感觉(.*\) 和 \1似乎没什么用? 将\1改成\2之后只是去掉了IP地址最后一位及后边的日期,只显示IP地址的三位.改成\3,\4和改成\2一样,真有点糊涂了,前辈指点.
回复 支持 反对

使用道具 举报

发表于 2007-11-9 13:28:26 | 显示全部楼层
\(.*\)/就是\1了
你根本没有第二个(), 用\2要做啥?

  1. cat iplist.conf|sed 's/192.168.0.\(.*\)/\1/'
  2. cat iplist.conf|sed 's/192.168.0.\(.*\)/192.168.1.X/'
  3. cat iplist.conf|sed 's/\(192.168.0.\)\(.*\)   /\1\2/'
复制代码

分别运行以理解一下

sed的 s///是最基本的问题
随便找个sed的教程都有讲
好好看书啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-12 11:45:16 | 显示全部楼层
谢谢大师指点 ^_^
回复 支持 反对

使用道具 举报

发表于 2007-11-13 01:05:58 | 显示全部楼层
又是前辈又是大师的。。。无语中
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-13 16:52:54 | 显示全部楼层
呵呵 谢谢 huan 了  现在已经搞透彻了 ^_^
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表