【发布时间】:2014-10-19 08:34:20
【问题描述】:
我知道 ARGV[i] 可用于存储用户输入。但是,我想在 awk 脚本中使用它并获取 ARGV[i] 来比较另一个文本文件中的字段。如果 ARGV[i] 匹配该字段或该字段包含 ARGV[i] 这是用户输入,那么我想返回该行的其他字段。 假设我有一个文件,testing.txt
123123123:Walter White:1:2:3:4
123123124:Jesse Pinkman:1:3:4:1
这是我的 awk 脚本,awkScript.awk
#!/usr/bin/awk -f
BEGIN{FS = ":"; print "ENTER A NAME: "}
{
for (i = 1; i < ARGC; i++)
{
if ($2 ~ /'ARGV[i]'/)
{
print "Member ID: " $1
}
}
}
它只是打印 ENTER A NAME: 当我执行脚本文件时。它甚至没有从用户那里得到输入。
【问题讨论】:
-
ARGV不能用于交互式内容。它是 shell 将其交给程序时的完整命令行,也就是您在/proc/PID/cmdline下找到的内容。在您的情况下,它看起来像yourprogram 'Walter White' datafile。如果您想获得用户输入,可以查看 [this question][1]。 [1]:stackoverflow.com/questions/12907238/get-the-user-input-in-awk -
这将更适合纯 *nix 解决方案。