【问题标题】:Using awk how do I combine data in two files and substitute multiple values from the second file to the first file?使用 awk 如何合并两个文件中的数据并将第二个文件中的多个值替换为第一个文件?
【发布时间】:2017-05-31 19:36:11
【问题描述】:

这个问题是Using awk how do I combine data in two files and substitute values from the second file to the first file?的扩展

data.txt 包含一些数据:

A;1
B;2
A;3

keys.txt 包含“key;value1;value;value3;value4”(在此示例中,“C”不是 data.txt 的一部分,但 awk 脚本应该仍然有效):

A;30;BC;100;1000
B;20;CD;200;2000
C;10;DE;300;3000

想要的输出:

A;1;30;BC;100;1000
B;2;20;CD;200;2000
A;3;30;BC;100;1000

因此,data.txt 中包含 keys.txt 中的任何键的每一行都应将相应的值附加到 data.txt 中的行。

【问题讨论】:

  • 最后一行的逻辑是什么?它是否基于位置(两个文件中的第 3 行)。因为第一个文件中没有“C”,所以不能按键。
  • @karakfa ,你是绝对正确的,我的错误.. 纠正了问题。

标签: awk multiple-columns key-value substitution


【解决方案1】:

这与问题中提到的上一个答案相似。

$ awk 'BEGIN   {FS=OFS=";"} 
       NR==FNR {k=$1; $1=""; a[k]=$0; next} 
       $1 in a {print $0 a[$1]}' file2 file1

A;1;30;BC;100;1000
B;2;20;CD;200;2000
A;3;30;BC;100;1000

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2022-10-01
    • 2021-01-08
    • 2014-05-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多