Sed 命令将一个文件中的字符串替换为另一个文件的内容
文件/var/cpanel/mainip包含我的服务器的主IP,而不包含其他内容。 文件/etc/csf/csf.blocklists包含一个防火墙阻止列表列表,文件的一部分包含一行示例IP地址1.2.3.4 通常,在新服务器上安装CSF防火墙软件时,我会手动将示例IP地址替换为服务器的主IP地址。这是从某些提供商成功获取防火墙阻止列表所必需的。 为了简化安装过程,我需要一个命令,将示例IP地址1.2.3.4替换为我的主服务器IP,这样我就不必手动执行 我已经尝试了sed命令,我想我已经接近正确的命令了,但还不完全正确。请问你能帮忙吗Sed 命令将一个文件中的字符串替换为另一个文件的内容,sed,pipe,sh,cat,Sed,Pipe,Sh,Cat,文件/var/cpanel/mainip包含我的服务器的主IP,而不包含其他内容。 文件/etc/csf/csf.blocklists包含一个防火墙阻止列表列表,文件的一部分包含一行示例IP地址1.2.3.4 通常,在新服务器上安装CSF防火墙软件时,我会手动将示例IP地址替换为服务器的主IP地址。这是从某些提供商成功获取防火墙阻止列表所必需的。 为了简化安装过程,我需要一个命令,将示例IP地址1.2.3.4替换为我的主服务器IP,这样我就不必手动执行 我已经尝试了sed命令,我想我已经接近正确
sed -i '/1.2.3.4/ { r /etc/csf/csf.blocklists }' /var/cpanel/mainip
此代码不正确,因为它输出错误:
sed:-e表达式#1,字符0:不匹配的`{'
成功后,它应该用实际的服务器IP地址替换1.2.3.4。
sed-i“s/1\.2\.3\.4/$(您只需要指定
sed -i "s/1\.2\.3\.4/$(</var/cpanel/mainip)/" /etc/csf/csf.blocklists
sed-i'/1.2.3.4/r/etc/csf/csf.blocklist'/var/cpanel/mainip
事实上,甚至空格也是可选的;下面的操作也可以
sed-i'/1.2.3.4/r/etc/csf/csf.blocklist'/var/cpanel/mainip
您只需指定模式/1.2.3.4/
和之后的命令
命令可以是r
用于读取,w
用于写入,d
用于删除,以及其他一些
删除条目的d
示例如下
sed-i'/1.2.3.4/d'/var/cpanel/mainip
在}
之前插入换行符或删除无用的{
和}
。a
,i
,c
,r
,r
,w
和w
命令都要求以换行结束。由于您的地址/1.2.3.4//code>后面只有一个命令,即r文件
,因此无需用括号将其包围。如果在t后面附加第二个命令同一个地址,将需要paren,但也需要两个命令字符串,例如,如果虚拟地址行也要删除sed-e'/1.2.3.4/{r file'-e'd}文件
。我认为sed-I'/1.2.3.4/{r/etc/csf/csf.blocklist;}“/var/cpanel/mainip
也可能有效。请注意关闭前的;
”
。但我最喜欢下面的Mihir解决方案。我认为您修改的文件仍将包含1.2.3.4
。祝您好运。