gpt4 book ai didi

linux - 如何在使用 sed 的字符串匹配后附加带美元符号的变量?

转载 作者:太空狗 更新时间:2023-10-29 12:12:10 25 4
gpt4 key购买 nike

我有一个带有美元符号的变量:

ipvar_definitions="
var SSH_SERVERS \$HOME_NET
var FTP_SERVERS \$HOME_NET
var SIP_SERVERS \$HOME_NET
"

我想在匹配后使用 sed 或 perl 或我可以使用的任何一种衬垫附加此变量的值。

使用以下代码尝试使用 sed 时:

sed   "/var SNMP_SERVERS/a ${ipvar_definitions}" /etc/snort.conf

我收到这个错误:

sed: -e expression #1, char 24: expected newer version of sed

我收到此错误是因为我的变量中有美元符号。我想使用 sed、perl、awk 或任何我可以使用的方法在一行中解决这个问题。

为了澄清,我发布了一个示例输入和预期输出:

输入:

# List of snmp servers on your network
var SNMP_SERVERS $HOME_NET

# Configure your service ports. This allows snort to look for attacks destined

预期输出:

# List of snmp servers on your network
var SNMP_SERVERS $HOME_NET
var SSH_SERVERS $HOME_NET
var FTP_SERVERS $HOME_NET
var SIP_SERVERS $HOME_NET

# Configure your service ports. This allows snort to look for attacks destined

最佳答案

使用 gnu awk 你可以做到这一点:

# no need to escape the $ if you use single quotes
ipvar_definitions='var SSH_SERVERS $HOME_NET
var FTP_SERVERS $HOME_NET
var SIP_SERVERS $HOME_NET'

# use awk command to insert ipvar_definitions after a line containing "var SNMP_SERVERS"
awk -v var="$ipvar_definitions" '1; /var SNMP_SERVERS/{print var}' /etc/snort.conf

输出:

# List of snmp servers on your network
var SNMP_SERVERS $HOME_NET
var SSH_SERVERS $HOME_NET
var FTP_SERVERS $HOME_NET
var SIP_SERVERS $HOME_NET

# Configure your service ports. This allows snort to look for attacks destined

关于linux - 如何在使用 sed 的字符串匹配后附加带美元符号的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39413684/

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