用于多个条件的AWK命令可打印不同的列

时间:2019-03-07 17:09:31

标签: shell awk

我收到多个文件,我需要从所有这些文件中提取某些字段。 我收到两种文件作为输入,下面是示例内容:

文件1

Line 1: ST*835*0001~
Line 2: ABC*I*K*KI*330.33*C*AED*CCP*01*071000013*DA*645906447*1752578509

文件2

Line 1 : ST|835|0103~
Line 2 : ABC|I|330.33|C|01|

下面是我的脚本,

for file in "$SEARCH_DIR"/*; do
   recamt=$(awk -F'[|*]' '/ABC/{print $4}' $file)
    echo " $recamt " >> $logFile
done

我需要基于330.33打印值ABC,但是由于各列有所不同(文件1在列4上,文件2在列3上),所以没有得到预期的输出。我该如何实现?谢谢!

我还有另一个awk,其用法如下

filedate=$(awk -F'*' '/\*HP\*IRX\*/ {print $5}' $file)

如何为awk -F"|""*"添加附加条件,但要搜索"'/\*HP\*IRX\*/""'/\|HP\|IRX\|/..,希望我明白。谢谢!

1 个答案:

答案 0 :(得分:0)

这里是单线: awk -F'[|*]' '{if($3==330.33) print "/ABC/"$3}' ./* >> logFile