【发布时间】:2018-02-09 06:19:17
【问题描述】:
我正在尝试比较 2 个文件数据并打印出来。
我的主要目标是在同一个 awk 语句中初始化一个包含一些值的 araay,并将其用于某些打印目的。
下面是我正在使用的命令,我觉得它看起来像一些语法错误。
请在 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)}'
示例输入文件
文件数据.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 初始化为 array=("RE_LOG_ID" "FILE_RUN_ID" "FH_RECORDTYPE" "FILECATEGORY") 并对应列名
从数组条件中获取列名将是当 ($i!=$(i+c)) 时,无论第“i”个位置不匹配,我将打印数组中的第“i”个元素。
如果我从命令中删除数组部分,则查找差异部分的工作非常完美,但我的问题是我想初始化一个包含列名的数组并在 awk 语句中打印它。
只是我需要帮助如何将数组部分合并到 AWK 中。
【问题讨论】:
-
请在您的帖子中的代码标签中发布示例 Input_file 和预期的示例输出,然后让我们知道。
-
使用示例更新
-
Samrat,请更清楚地解释一下,比如
FH_RECORDTYPE是如何输出的?请为您的问题添加更多详细信息。 -
@RavinderSingh13 -- 如果你看到我的命令尝试了那些是我想要的数组元素..
-
是的,我知道您想在特定条件下插入一些文本,但您的条件不清楚。请花点时间重新定义您的帖子。