gpt4 book ai didi

bash - 基于一列匹配和打印两个文件时的awk

转载 作者:行者123 更新时间:2023-11-29 09:29:32 30 4
gpt4 key购买 nike

我有两个文件(分隔符是制表符)

文件 1:db.txt

string1 string2 string3 001 string4
string5 string6 string7 002 string8
string9 string10 string11 003 string12

文件 2:query.txt

id1 001
id2 003

我想匹配 file1 和 file2 并打印(如果匹配)db.txt 的第 1 到 5 列和 query.txt 的第 1 列/p>

我尝试使用 awk,这里是我的代码:

awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$2]=$4;next}$4 in a{print $1,$2,$3,$4,$5,a[$1]}' query.txt db.txt

但我只得到一个包含匹配项(?我至少是这么认为)和 db.txt 文件列的文件

编辑:我的更复杂的 db2.txt

string1 <TAB> string2 <TAB> 9999 abc dehi [way:pn9999] <TAB> 001 <TAB> org; string3 string4
string5 <TAB> string6 <TAB> 9999 dwd meti [way:pn8999] <TAB> 002 <TAB> org2; string7
string8 <TAB> string9 <TAB> 9999 dwd meti [way:pn7999] <TAB> 003 <TAB> org4; string10

最佳答案

您可以像这样使用 awk:

awk 'BEGIN{FS=OFS="\t"} FNR == NR { a[$2] = $1; next }
$4 in a { print $0, a[$4] }' query.txt db.txt

string1 string2 string3 001 string4 id1
string9 string10 string11 003 string12 id2

关于bash - 基于一列匹配和打印两个文件时的awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042634/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com