【发布时间】:2019-07-27 21:33:50
【问题描述】:
我在这里找到了一些关于从 awk 调用外部命令并将结果存储在变量中的极好的帮助。我无法找到的是如何让 awk 对结果采取行动,就像对普通输入文本文件一样。
我使用 awk 解析一个小的 HTML 文件(正在运行的 Tahoe LAFS 节点的状态页面),以便找到列出的一些 IP 地址。在每个 IP 地址上,我对特定端口运行 nmap 扫描,以查看它是否打开(是的,这将成为自动 Tahoe LAFS 网格监视器)。使用 if 语句,我可以从 nmap 中挑选出包含端口状态(打开/过滤/关闭)作为其第二个字段(通常是“8098/TCP 打开未知”)的输出行。我想去掉字段 1 和 3 的行,只保留字段 2,但是,$2 当然是指我用作 awk 脚本输入的 HTML 文件中的字段。我尝试了一个用户定义的函数,它只返回了 $2,但它也引用了输入 HTML 文件中的字段。
有没有办法在 awk 脚本中引用内部创建的变量中的字段?类似于 awk 脚本中的嵌套 awk 命令?
【问题讨论】:
-
发布您的输入数据、预期输出以及您自己尝试构建解决方案的尝试。
-
您使用的是什么操作系统?这听起来可能是最好不要完全在 awk 脚本中完成的工作。
-
我在 Ubuntu 上。我意识到这可能会在 awk 之外更好地完成,但我真的很喜欢 awk 的简单正则表达式匹配和解析能力。一个更简洁的解决方案可能是将我的 awk 解析器的输出写入文件并在 shell 脚本中调用 awk 脚本。但现在我开始了......
-
不,这不是一个更简洁的解决方案,但它不是唯一的选择。如果您按照@anubhava 的要求发布一些示例输入和预期输出,我们可以开始为您提供帮助。
标签: awk