我有一个主文件 bla.tsv (FS= \t
):
id hub fil plop
34 ji ji
54 jo jo
46 ja ja
还有一个信息文件 hub.csv (FS= ,
):
34,fuse
46,fose
我想将 的信息打印hub.csv
到这样的列hub
中bla.tsv
:
id hub fil plop
34 fuse ji ji
54 jo jo
46 fose ja ja
我设法在正确的行中打印了正确的信息,但在最后一个之后的列中:
awk -v OFS="\t" 'NR==FNR{a[$1]=$2;next}{print $0,a[$1]}' FS="," hub.csv FS="\t" bla.tsv > result.tsv
如何bla.tsv
使用在hub.csv
(如果有)中找到的值填充第二列?请注意, 的结构bla.tsv
已经“正确”,即标题后的所有行中都有一个空的第二列(\t
ID 后连续两列)。
由于您的格式bla.tsv
已经正确且第二列为空,因此只需对您的方法进行最小的修改:
awk -v OFS="\t" 'NR==FNR{a[$1]=$2;next} ($1 in a){$2=a[$1]} 1' FS="," hub.csv FS="\t" bla.tsv > result.tsv
这将在处理bla.tsv
时检查 IDhub
在数组中是否具有匹配值a
。如果是这样,它将第二个字段设置为该值,通常,打印当前行(包括所做的所有修改)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句