遇到问题awk
。基本上我想要做的是在文件中搜索这个特定的字符串。然后打印该行的第三个元素。使用awk的shell脚本
这里就是我所做的:
awk -F'/' '$1=="$log"{print $3}' schedlist
出于某种原因,这是行不通的,但如果我这样做:
awk -F'/' '$1=="20121213-20:58:53"{print $3}' schedlist
代码工作。但是我需要让用户输入log
的名字。
遇到问题awk
。基本上我想要做的是在文件中搜索这个特定的字符串。然后打印该行的第三个元素。使用awk的shell脚本
这里就是我所做的:
awk -F'/' '$1=="$log"{print $3}' schedlist
出于某种原因,这是行不通的,但如果我这样做:
awk -F'/' '$1=="20121213-20:58:53"{print $3}' schedlist
代码工作。但是我需要让用户输入log
的名字。
您有几种选择。使用一个变量(或者与-v
或简称为任务,但不能命名为“日志”,因为这是一个awk功能):
awk -F'/' '$1 == s {print $3}' s="$log" schedlist
报价脚本不同:
awk -F'/' '$1 == "'"$log"'" { print $3}' schedlist
您需要使用-v
选项shell变量传递到awk
,像这样:
awk -v tstamp="$log" -F'/' '$1==tstamp{print $3}' schedlist
(更新变量名称为在评论中提到的)tstamp
(因为log
冲突与AWK内置功能log
。)
嗯我已经试过了,我得到这个错误:awk:运行时错误:不能命令行分配到日志 \t类型冲突或关键字 \t FILENAME =“”FNR = 0 NR = 0 –
+1为正确的答案,但不幸的是你选择了一个与内建函数名称“log”冲突的变量名称!只需将变量名称更改为tstamp或其他内容:'awk -v tstamp =“$ log”-F'/''$ 1 == tstamp {print $ 3}'schedlist' –
非常感谢!这样做的工作! (Y) –