使用 sed 或 awk 更新行

发布于 2024-08-23 06:07:11 字数 423 浏览 5 评论 0原文

我想打开 httpd.conf 文件并使用新参数更改 LogFormat 行。 标准是该行应以“LogFormat”开头并以“combined”一词结尾

以下是我手动执行的操作。我想以编程方式更改线路。

vi /etc/httpd/conf/httpd.conf 
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "\"%h\" \"%l\" \"%u\" \"%{%Y-%m-%d %H:%M:%S}t\" \"%r\" \"%>s\" \"%b\" \"%{Referer}i\" \"%{User-Agent}i\" \"%D\" \"%T\" \"%q\" \"%f\" \"%v\" " combined

I want to open the httpd.conf file and change the LogFormat line with the new parameters.
The criterion will be that the line should start with "LogFormat" and end with the word "combined"

Here is how I do manually. I want to change the line programatically.

vi /etc/httpd/conf/httpd.conf 
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "\"%h\" \"%l\" \"%u\" \"%{%Y-%m-%d %H:%M:%S}t\" \"%r\" \"%>s\" \"%b\" \"%{Referer}i\" \"%{User-Agent}i\" \"%D\" \"%T\" \"%q\" \"%f\" \"%v\" " combined

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

物价感观 2024-08-30 06:07:11

请改用 Perl 及其 -i (就地编辑)标志。

perl -i.bak -pe 's/^LogFormat (.*) combined$/replacement/' httpd.conf

这将就地修改文件 httpd.conf,并将备份存储在文件“httpd.conf.bak”中。将“替换”替换为您想要的实际替换文本。

Use Perl instead, with its -i (inplace-edit) flag.

perl -i.bak -pe 's/^LogFormat (.*) combined$/replacement/' httpd.conf

This will modify the file httpd.conf in place, storing a backup in the file "httpd.conf.bak". Replace "replacement" with the actual replacement text you want.

失去的东西太少 2024-08-30 06:07:11

你可以尝试这样的事情:

sed 's/^LogFormat.*combined$/new-logformat-line-whatever/' httpd.conf

You could try something like:

sed 's/^LogFormat.*combined$/new-logformat-line-whatever/' httpd.conf
↙厌世 2024-08-30 06:07:11
#!/bin/bash

cp /etc/httpd/conf/httpd.conf  /etc/httpd/conf/httpd.conf.bak
awk 'BEGIN{
 pat1="\\\"%{%Y-%m-%d %H:%M:%S}t\\\""
 pat2="\\\"%D\\\" \\\"%T\\\" \\\"%q\\\" \\\"%f\\\" \\\"%v\\\""
}
/^LogFormat.*combined/{
 $5=pat1
 $NF=pat2"\042 combined"
}1' file >temp
mv temp /etc/httpd/conf/httpd.conf
#!/bin/bash

cp /etc/httpd/conf/httpd.conf  /etc/httpd/conf/httpd.conf.bak
awk 'BEGIN{
 pat1="\\\"%{%Y-%m-%d %H:%M:%S}t\\\""
 pat2="\\\"%D\\\" \\\"%T\\\" \\\"%q\\\" \\\"%f\\\" \\\"%v\\\""
}
/^LogFormat.*combined/{
 $5=pat1
 $NF=pat2"\042 combined"
}1' file >temp
mv temp /etc/httpd/conf/httpd.conf
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文