gpt4 book ai didi

regex - 使用 sed 在附加文本之前追加两个新行

转载 作者:行者123 更新时间:2023-11-29 09:30:24 25 4
gpt4 key购买 nike

(对我来说)我遇到了一些困难。我试图在我们的服务器构建过程中将两个换行符插入到 RHEL5/etc/sysconfig/iptables 文件中(使用 kickstart 安装后脚本)。

具体的sed命令是:

${SED} -i "/-i lo/ a\
\n\n#Trusted Traffic\n-A INPUT -s 10.153.156.0/25,10.153.174.160/27 -d ${MGTIP} -m state --state NEW -j ACCEPT\n\n#Remote Access\n-A INPUT -s 10.120.80.0/21,10.152.80.0/21,10.153.193.0/24,172.18.1.0/24,${MGTNET}/${NUMBITS} -d ${MGTIP} -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT\n\n#Backups\n-A INPUT -s 10.153.147.192/26 -d ${BKPIP} -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT\n\n" ${IPTABLES}

这实际上是一个更大脚本的一部分。 ${SED} 和 ${IPTABLES} 已设置为必要的值。

除前两个外,所有换行符都有效。或者,更准确地说,是前两个中的第二个。即使是 ACCEPT 工作后的最后两个换行符。前两个换行符发生的是第一个工作,在匹配包含 -i lo 的 iptables 条目后创建一个换行符。然而,第二个只是在 #Trusted Traffic 文本之前插入文字“n”。

它最终看起来像

(snip)
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
n#Trusted Traffic
-A INPUT (snip)

我尝试了各种方法来确保插入第二个换行符。我使用了两个空行而不是 \n\n。我在不同的行上使用了两个换行符,我使用了 \\n\\n。到目前为止,我尝试过的所有操作都会导致相同的结果:插入文字“n”而不是第二个换行符。

sed 是否根本无法在附加文本的开头使用两个换行符?有没有办法让我完全不知道的这项工作?

最佳答案

我不明白为什么它也不起作用,但你也可以使用替代选项而不是追加来做到这一点:

${SED} -i "s%-i lo.*%&\n\n#Trusted Traffic\n-A INPUT -s 10.153.156.0/25,10.153.174.160/27 -d ${MGTIP} -m state --state NEW -j ACCEPT\n\n#Remote Access\n-A INPUT -s 10.120.80.0/21,10.152.80.0/21,10.153.193.0/24,172.18.1.0/24,${MGTNET}/${NUMBITS} -d ${MGTIP} -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT\n\n#Backups\n-A INPUT -s 10.153.147.192/26 -d ${BKPIP} -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT\n\n%" ${IPTABLES}

关于regex - 使用 sed 在附加文本之前追加两个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108838/

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