2

遇到麻烦awk。基本上我要做的是在文件中搜索这个特定的字符串。然后打印该行的第三个元素。

这是我所做的:

awk -F' / ' '$1=="$log"{print $3}' schedlist

出于某种原因,这不起作用,但如果我这样做:

awk -F' / ' '$1=="20121213-20:58:53"{print $3}' schedlist

该代码有效。但我需要让用户输入log姓名。

4

2 回答 2

3

您需要使用该-v选项将 shell 变量传递给awk,如下所示:

awk -v tstamp="$log" -F' / ' '$1==tstamp{print $3}' schedlist

(将变量名称更新为tstamp(如评论中所述),因为log与 awk 内置函数冲突log。)

于 2012-12-13T17:28:56.607 回答
2

你有几个选择。使用变量(带有-v或仅作为赋值,但不能将其命名为“log”,因为这是一个 awk 函数):

awk -F' / ' '$1 == s {print $3}' s="$log" schedlist

以不同的方式引用您的脚本:

awk -F' / ' '$1 == "'"$log"'" { print $3}' schedlist
于 2012-12-13T18:22:56.730 回答