【问题标题】:Compare two files and move the common record to another file比较两个文件并将公共记录移动到另一个文件
【发布时间】:2016-02-18 10:49:47
【问题描述】:

有两个文本文件。

File1:
xchg_rat_to_cncy_cd=PLN
xchg_rat_to_cncy_cd=PLZ
xchg_rat_to_cncy_cd=PTE

File2:
epoc_id=1455718545/xchg_rat_to_cncy_cd=PLN
epoc_id=1455718545/xchg_rat_to_cncy_cd=PLZ
epoc_id=1455718545/xchg_rat_to_cncy_cd=PTE

*字段数不限于file1中的1个或file2中的2个。但第二个文件将始终将额外的列作为第一个字段。

这是我到目前为止所尝试的,file1 有 1 列,file2 有 2 列。

awk -F'/' 'FNR==NR{a[$2]=$1;next} ($1 in a) {print a[$1],$1}' FILE1 FILE2

但这仅限于 file1 有 1 列和 file2 有 2 列。 我想让它可扩展,以便它可以处理具有 n 列的文件。

请提出解决方案

【问题讨论】:

  • 预期结果是什么?
  • 如果您 want to make it scalable so that it can handle files with n columns. 然后编辑您的问题,以便您提供给我们的示例有超过 2 列,否则我们会猜测您的意思以及您的要求可能是什么。使示例简洁但切合实际,这样无论您得到什么解决方案,您都可以扩展以用于您的真实数据(例如,如果您需要处理 1,000 个字段,请发布一个包含 5 个或更少字段的示例,而不是 1,000 个)。并添加给定输入的预期输出。

标签: unix join awk


【解决方案1】:

预期的输出有点不清楚,但试试这个:

grep -f FILE1 FILE2

grep -o -f FILE1 FILE2
xchg_rat_to_cncy_cd=PLN
xchg_rat_to_cncy_cd=PLZ
xchg_rat_to_cncy_cd=PTE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多