Sed 编辑一行

Sed 编辑一行,sed,Sed,我正在尝试使用sed修改一行,如下所示 CustomLog /home/logs/httpd/access_log common 到 我尝试了sed替换为文本,但没有成功。我正在尝试对大约800个文件执行此操作,因此需要一个命令来执行此操作。这似乎有效: sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\1 "|\/usr\/sbin\/rotatelogs \2_`date +%m_%d_%Y` 86400" combined/' 例如: > echo "C

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

CustomLog /home/logs/httpd/access_log common

我尝试了
sed
替换为文本,但没有成功。我正在尝试对大约800个文件执行此操作,因此需要一个命令来执行此操作。

这似乎有效:

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/'

你能把你试过的那一行贴上去吗?也许这是一个简单的错误,我们将能够解决这一问题。在尝试了这么多时间后,这一点对我也很有效。sed-e's/CustomLog/\CustomLog“| \/usr\/sbin\/rotatelogs/'-e's/\u log/\uU%m\u%d\u%Y 86400”/“文件名”(我使用*作为文件名,以便我可以对我目录中的所有文件使用它)
> echo "CustomLog /home/logs/httpd/access_log common" | sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\1 "|\/usr\/sbin\/rotatelogs \2_`date +%m_%d_%Y` 86400" combined/'
sed -i.bak '/CustomLog/{
        s# # "|/usr/sbin/rotatelogs #
        s/ common$/_%m_%d_%Y 86400" combined/
}' *.conf