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
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 编辑
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
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的
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