【发布时间】:2021-03-04 04:26:04
【问题描述】:
我想知道如何使用 AWK 找到环境变量的完全匹配。
我的环境变量是ESSID="Super asdf"
我的文件也是一个变量 ($AIRODUMP_2G_LOG),包含以下两行(以及许多其他行):
E4-7A-19-80-01-CC, 2020-11-16 08:58:07, 2020-11-16 08:58:35, 8, 54, WPA2, CCMP, PSK, -81, 81, 5, 0. 0. 0. 0, 14, Super asdf,
EE-80-6B-70-C1-EF, 2020-11-16 08:58:07, 2020-11-16 08:58:36, 8, 54, WPA2, CCMP TKIP, PSK, -81, 79, 0, 0. 0. 0. 0, 18, Super asdf_EXT,
我目前的 AWK 搜索功能如下:
awk -F, '($14 ~ ENVIRON["ESSID"]) {print $0}' $AIRODUMP_2G_LOG
使用该搜索功能,它会显示上面显示的这两行,但我真的只想要最后没有_EXT 的那一行。对于我的生活,我无法弄清楚如何使用以 ($) 结尾的搜索功能,只需使用我的环境变量 Super asdf。我知道如果我将搜索功能更改为 awk -F, '$14 ~ /f$/ {print $14}' "$AIRODUMP_2G_LOG" 它会起作用,但我想在 AWK 中使用 env-var。
编辑:
抱歉,我的代码应该是 $14 == ENVIRON["ESSID"],如下评论中所述。
【问题讨论】:
-
{print $0}是 awk 在仅给定条件时的默认操作;因此,您可以忽略它。 -
我实际上想打印 1 和 4,但我在写问题时忽略了这一点。不太清楚为什么我被标记了,也许我应该提到
==对我不起作用? -
不是我的反对意见;不能说。不必担心偶尔会出现无缘无故的、无法解释的投反对票——请记住,每次投赞成票所获得的声望都比投反对票的成本高得多。