Chinaunix

标题: 文件里找到指定行并修改内容 [打印本页]

作者: zebiak    时间: 2013-07-17 10:26
标题: 文件里找到指定行并修改内容
我想在日志服务器配置文件里找到mail.err开头的一行,并把mail.err对应的日志记录文件改成一个IP
简单说就是用关键字在文件里索引一行,并修改该行内容。
这行的内容原来是mail.err\t\t\t/var/log/mail.err
我想改成mail.err\t\t\t/@192.168.1.1
\t代表制表符
作者: dn833    时间: 2013-07-17 10:42
  1. sed '/^mail.err/s/\(mail.err\).*/\1\t\t\t@192.168.1.1/'
复制代码

作者: kooleon    时间: 2013-07-17 10:42
本帖最后由 kooleon 于 2013-07-17 10:46 编辑
  1. sed 's/^mail.err/mail.err\t\t\t\/@192.168.1.1/' urfile
复制代码
这样行不?
作者: zebiak    时间: 2013-07-17 10:48
回复 3# kooleon


    3q,问一下\1代表什么?
作者: kooleon    时间: 2013-07-17 10:50
本帖最后由 kooleon 于 2013-07-17 10:51 编辑

回复 4# zebiak
dn883写的么?\1表示他括号里的内容"mail.err" 。


   
作者: wsleichao3    时间: 2013-07-17 10:51
  1. echo -e 'mail.err\t\t\t/var/log/mail.err'|sed 's/mail\.err/@192.168.1.1/2'
复制代码

作者: zebiak    时间: 2013-07-17 10:53
查到了3Q,
1,20s/\(you\)self/\1r/  标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。
作者: zebiak    时间: 2013-07-17 10:55
.*代表什么?
作者: zebiak    时间: 2013-07-17 10:56
.*代表任意字符
作者: wsleichao3    时间: 2013-07-17 11:03
wsleichao3 发表于 2013-07-17 10:51


没认真看题...大侠们都写了那么多,写个awk的
  1. awk '$1~/mail.err$/{print $1"\t\t\t/@192.168.1.1"}' a
复制代码

作者: zebiak    时间: 2013-07-17 11:10
awk的也很好啊~3Q
作者: zebiak    时间: 2013-07-17 11:10
awk的也很好啊~3Q




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2