【问题标题】:Use Awk to get data from two files使用 awk 从两个文件中获取数据
【发布时间】:2019-04-13 15:37:09
【问题描述】:

我有两个不同的文件,每个文件有两列。

file1.txt

DevId   Group
aaa     A
bbb     B

file2.txt

Group   RefId
A       111-222-333
B       444-555-666

我只需要 DevId 及其对应的 RefId。

需要的输出

DevId   RefId
aaa     111-222-333
bbb     444-555-666

我尝试使用此语法,但无法正确理解。

awk -F, -v OFS=, 'NR==FNR{a[$1]=$2;next}{print a[$2],$1}' file2.txt file1.txt

我希望有人可以帮助我。

【问题讨论】:

    标签: awk lookup


    【解决方案1】:

    这里:

    awk -v RS="\r\n" 'FNR==NR{a[$1]=$2;next}{ print $1, a[$2]}' file2.txt file1.txt
    

    这是从 Awk multiple files 修改而来的,我建议您阅读它的解释。

    编辑:正如@JamesBrown 所述,添加-v RS="\r\n" 用于行尾

    【讨论】:

    • 我试过这个。但我只能得到 DevId。我会读那个。谢谢!
    • 你“只能得到 DevId”是什么意思?我已经在我的本地机器上试过了,它会输出你需要的输出。
    • 输出只有 DevId 下的值。
    • OP,你有 \r\n 行尾。使用awk -v RS="\r\n" ... 同样修复@RavinderSingh13 的答案。
    • @jecha,感谢@JamesBrown,我更新了答案。如果可以的话,我还建议在 Linux 中处理文件时使用 dos2unix,因为大多数 unix 工具都需要 unix 行结尾。
    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多