gpt4 book ai didi

bash - 根据特殊条件的第一列对两个文件进行排序

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

我找到了与比较和排序文件类似的主题,但没有一个符合我的需求。尝试解释示例:

cat file1

D value1 value2 value[n]
Z value1 value2 value[n]
H value1 value2 value[n]
A value1 value2 value[n]
C value1 value2 value[n]

cat file2

C value11 value22 value[n]
D value11 value22 value[n]
A value11 value22 value[n]

期望输出:

猫输出

D value11 value22 value[n]
Z ------- ------- -------[n]
H ------- ------- -------[n]
A value11 value22 value[n]
C value11 value22 value[n]

因此根据第一列 file2 与 file1 进行比较 - 如果匹配则打印整行 file2,但继续根据 file1 排序。如果没有匹配项,则仅打印点 (------) 之后的第一列。两个文件的列数不同。

任何想法或帮助将不胜感激。

最佳答案

If no match print just first column following dots (-------).

因此我认为 [n] 也应该替换为 -

然后这个:

awk 'NR==FNR{a[$1]++;next}!a[$1]{for(i=2;i<=NF;i++)gsub(/./,"-",$i)}7' f2 f1

给出:

D value1 value2 value[n]
Z ------ ------ --------
H ------ ------ --------
A value1 value2 value[n]
C value1 value2 value[n]

编辑

awk 'NR==FNR{a[$1]=$0;next}{if(a[$1])$0=a[$1];else for(i=2;i<=NF;i++)gsub(/./,"-",$i)}7' f2 f1

给出:

D value11 value22 value[n]
Z ------ ------ --------
H ------ ------ --------
A value11 value22 value[n]
C value11 value22 value[n]

关于bash - 根据特殊条件的第一列对两个文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594531/

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