我正在使用awk编写一个bash脚本,并在AIX powerpc机器中传递变量。 在我阅读了一些问题后,编写的代码工作正常。这个网站的答案。 :)
现在,我想在我的bash脚本中添加if语句,并且我遇到了awk语法错误。 我的要求(见下面的脚本): - 如果awk模式匹配为true,则打印$ 0 - 否则打印"交易:找不到p值。"
trans.txt的内容
bash-4.2$ cat trans.txt
10291413
8537353
8619033
8619065
8625705
是的,请有人帮助我。谢谢。
getDetail.sh的内容
#!/usr/bin/bash
sysDir="/var/syslog-ng/TEST/STS"
syslogFile="DPSTSLog2014-10-22T09.log"
pattern="Latency"
filename=$1
while read f; do
concatPattern="$f.*$pattern"
awk -v p="$concatPattern" '$0 ~ p {print $0}' $sysDir/$syslogFile
done < $filename
在
下面运行命令执行./getDetails.sh trans.txt
结果
2014-10-22T09:15:53+11:00,10.16.198.50,info,latency,[info] xmlfirewall(ws-TrustValidate): trans(10291413): Latency: 0 0 0 0 14 14 0 14 0 0 0 14 0 0 0 0
2014-10-22T09:15:38+11:00,10.16.198.50,info,latency,[info] xmlfirewall(ws-TrustValidate): trans(8619033): Latency: 0 0 0 0 73 73 0 73 0 0 0 73 0 0 0 0
2014-10-22T09:18:04+11:00,10.16.198.50,info,latency,[info] xmlfirewall(ws-TrustValidate): trans(8625705): Latency: 0 0 0 0 13 13 0 13 0 0 0 13 0 0 0 0
答案 0 :(得分:0)
awk -v p="$concatPattern" '
$0 ~ p {print $0; found=1}
END {if (! found) print "transaction: p value not found"}
' $sysDir/$syslogFile