【发布时间】:2018-11-21 17:22:29
【问题描述】:
我有两台 Linux 机器。一个是 4.4.12-99,一个是 4.4.143。我刚刚对它们都进行了 apt upgrade 。
我有一个 awk 语句,其中包含适用于 4.4.143 的正则表达式,但在 4.4.12-99 上失败。我已经搜索了几天并尝试了多种不同的语法来发现可能出现的问题。 awk 没有失败或抱怨,它只是不匹配单词边界。除了这个 awk 语句之外,每台机器上的脚本都相同并且工作正常。在一个不能正常工作的地方,我可以让它匹配所有的东西并提供那个结果。
ip=$(awk -v sUSER="$sUSER" 'BEGIN{gsub(/\./,"\\.",sUSER)}match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) && $0 ~ ("[^[:alnum:]]"sUSER"$") && $0 !~ /^$/ && $0 !~ /^#/{print $1}' /etc/hosts )
awk 使用变量 $sUSER 查看 /etc/hosts 文件,并尝试将用户与关联的 IP 地址匹配。
我不知道我做错了什么。
【问题讨论】:
-
您运行它的示例文件是什么?给我们一个适当的可重现的例子来帮助我们解决您的问题
-
您好,示例文件是 /etc/hosts 文件,如 awk 语句末尾所示,再次,如前所述,此 awk 查找 /etc/hosts 文件并提取给定用户名/主机名的 IP 地址。
-
@WesZ,你之前的帖子stackoverflow.com/questions/53353494/… 有什么不同请告诉我们?那个帖子你也没有告诉任何人发生了什么,所以请不要这样做,只回答问题/问题
-
它说:谢谢。你好。我想发布提供正确输出的最后一行代码。我感谢那些做出回应的人的所有帮助和指导。我想发布最终代码,以防将来有人发现它有用。
-
内核版本与您运行的 awk 版本完全无关。内核版本不是识别机器的可靠方法,因为您可能会不时执行更新。