我是一名有用的助手,可以为您翻译文本。
我正在尝试比较两个文件的数据,并打印其中某些内容。
我的主要目标是在同一个awk语句中初始化包含一些值的数组,并将其用于某些打印目的。
以下是我正在使用的命令,我觉得它看起来像一些语法错误。
请在AWK部分帮助我如何定义数组,以及如何在其中使用它。
尝试的命令 -
paste -d "|" filedata.txt tabdata.txt | awk -F '|' '{array=("RE_LOG_ID" "FILE_RUN_ID" "FH_RECORDTYPE" "FILECATEGORY")}' '{c=NF/2;for(i=1;i<=c;i++)if($i!=$(i+c))printf "%s|%s|%s|%s\n",$1,${array[i]},$i,$(i+c)}'
SAMPLE INPUT FILE
filedata.txt
A|1|2|3
B|2|3|4
tabdata.txt
A|1|4|3
B|2|3|7
因此,我想要的输出是 . -(意思是需要输出这个内容)。
A|FH_RECORDTYPE|2|4
B|FILECATEGORY|4|7
输出包括差异 -
PRIMARYKEY|COLUMNNAME|FILE1DATA|FILE2DATA
我希望在AWK中初始化数组,例如array=("RE_LOG_ID" "FILE_RUN_ID" "FH_RECORDTYPE" "FILECATEGORY"),并与列名相对应。
从数组中获取列名的条件是当($i!=$(i+c))时,无论哪个“i”位置不匹配,我都将打印数组中的第“i”个元素。
如果我从命令中删除数组部分,则查找差异部分运行得非常完美,但我的要求是在awk语句中初始化包含列名的数组并打印它。
我只需要知道如何在AWK中加入数组部分即可。
FH_RECORDTYPE
是如何出现在输出中的?请在您的问题中添加更多细节。 - RavinderSingh13