bash脚本awk与传递变量和if语句

时间:2014-10-22 22:55:08

标签: bash variables if-statement awk

我正在使用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

1 个答案:

答案 0 :(得分:0)

awk -v p="$concatPattern" '
    $0 ~ p {print $0; found=1}
    END   {if (! found) print "transaction: p value not found"}
' $sysDir/$syslogFile