【问题标题】:Compare columns of csv and txt file and update csv file with same entries that matches in both doc using bash script [duplicate]比较 csv 和 txt 文件的列,并使用 bash 脚本更新 csv 文件与两个 doc 中匹配的相同条目 [重复]
【发布时间】:2021-12-17 12:59:29
【问题描述】:

谁能帮我完成这项任务 比较 csv 和 txt 文件的列,并使用 bash 脚本更新 csv 文件与两个 doc 中匹配的相同条目

file1.csv

tiger roar 12 7869 
dog bark 6 4455
cat mew 8 4432
puppy bark 2 4455

等等……

file2.txt

7869 ability1
4455 abilityX
4455 ability2
4432 ability3
8899 ability4

等等……

我们需要匹配 csv 文件的第 4 列和 txt 文件的第 1 列,并且对于相同的条目更新 csv 文件中的第 2 列。

预期输出

tiger roar 12 7869 ability1 
dog bark 6 4455 ability2 abilityX
cat mew 8 4432ability3
puppy bark 2 4455 ability2 abilityX

等等……

如果有人知道如何在 bash 和 python 中实现这一点...

【问题讨论】:

  • 欢迎使用 StackOverflow。请展示您到现在为止的尝试,并解释为什么它没有按预期工作。
  • 为什么这个标签是 CSV?所涉及的两个文件看起来都不是 CSV 格式。

标签: bash csv


【解决方案1】:

使用awk

awk \
'if (FNR==NR) {
    ability[$1] = ability[$1]" "$2
}
else {
    print $0 ability[$4]
}' abilities.txt animals.csv > animals-updated.csv

您的“csv”文件(逗号分隔变量)实际上不包含逗号 (,)。如果是这样,您可以直接在print 上方添加FS=","

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多