在 Bash 脚本中使用带有列号的 awk

在 Bash 脚本中使用带有列号的 awk

我正在使用这样的命令来获取一些连接nf_conntrack

awk '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == "dport=1234")' /proc/net/nf_conntrack

如何在 Bash 脚本中使用此命令并向其添加脚本参数?如果我这样做:

awk '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == "dport=$1")' /proc/net/nf_conntrack

它会假设所有$1$3$6、... 都是脚本参数并失败。如何将awk列号与脚本参数分开才能正确使用此命令?

答案1

这不是必需的,但根据经验法则,明确声明要从环境传递给的变量awk

awk -v myvar="dport=$1" '($3 == "tcp") && ($6 != "TIME_WAIT") && ($10 == myvar)' /proc/net/nf_conntrack

相关内容