gpt4 book ai didi

linux - 如何从 shell 脚本搜索和替换文件中的文本?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:07 25 4
gpt4 key购买 nike

我正在尝试编写一个 shell 脚本,在启动时在配置文件中进行搜索和替换。

我们要替换的字符串是:

include /etc/nginx/https.include;

我们想用注释版本替换它:

#include /etc/nginx/https.include;

包含我们要替换的字符串的文件是:

/etc/nginx/app-servers.include 

我不是 Linux 高手,似乎找不到执行此操作的命令。

最佳答案

perl -p -i -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include

如果该行可能不以 ; 结尾,请改用:

perl -p -i -e 's%^(include /etc/nginx/https.include;.*)$%#$1%' /etc/nginx/ap-servers.include

如果想保留原文件,在-i后添加备份扩展名:

perl -p -i.bak -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include

现在,解释一下。 -p 标志表示就地替换。文件的所有行都将提供给表达式,结果将用作替换。 -i 标志表示备份文件的扩展名。通过不带任何东西使用它,可以防止生成备份。 -e 告诉 Perl 获取以下参数作为要执行的表达式。

现在,表达式是 s%something%other%。我使用 % 而不是更传统的 / 来避免必须转义路径的斜线。为了安全起见,我在表达式中使用括号并在替代表达式中使用 $1 —— 如果您更改其中一个,另一个也会随之更改。因此,%#$1% 实际上是 s 的第二个 %,后面是所需的 #$1 表示括号内的模式,以及 s 的最后 %

HTH。手。

关于linux - 如何从 shell 脚本搜索和替换文件中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com