sed编辑一行

时间:2014-04-02 20:10:43

标签: sed

我正在尝试使用sed修改如下所示的行

CustomLog /home/logs/httpd/access_log common

CustomLog "|/usr/sbin/rotatelogs /home/logs/httpd/access_log_%m_%d_%Y 86400" combined

我尝试使用sed替换文字,但它无效。我正在尝试为大约800个文件执行此操作,因此需要一个命令才能执行此操作。

2 个答案:

答案 0 :(得分:1)

这似乎有效:

sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\1 "|\/usr\/sbin\/rotatelogs \2_`date +%m_%d_%Y` 86400" combined/'

示例:

> echo "CustomLog /home/logs/httpd/access_log common" | sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\1 "|\/usr\/sbin\/rotatelogs \2_`date +%m_%d_%Y` 86400" combined/'

答案 1 :(得分:0)

sed -i.bak '/CustomLog/{
        s# # "|/usr/sbin/rotatelogs #
        s/ common$/_%m_%d_%Y 86400" combined/
}' *.conf