Awk 在第1列的基础上打印两个文件
我有两个多行的文件。 第一个文件有2个列,第二个文件有2000多个列。 示例数据集包括: 示例文件_1Awk 在第1列的基础上打印两个文件,awk,sed,Awk,Sed,我有两个多行的文件。 第一个文件有2个列,第二个文件有2000多个列。 示例数据集包括: 示例文件_1 car Maruti car TATA car Hyundai car Jaguar Jeep Mahindra 示例文件2 car A B C D E F G Jeep X Y Z W Q W K 我试过这个 awk '{a[$1]=a[$1]" "$0} ++n[$1]==2{print a[$1]}' File_2 File_1 t此命令的输出仅打印一次数据,而不是按完美顺序打印
car Maruti
car TATA
car Hyundai
car Jaguar
Jeep Mahindra
示例文件2
car A B C D E F G
Jeep X Y Z W Q W K
我试过这个
awk '{a[$1]=a[$1]" "$0} ++n[$1]==2{print a[$1]}' File_2 File_1
t此命令的输出仅打印一次数据,而不是按完美顺序打印。我得到了以下结果:
car A B C D E F G car Maruti
Jeep X Y Z W Q W K Jeep Mahindra
基于第一个文件的预期输出为:
car Maruti car A B C D E F G
car TATA car A B C D E F G
car Hyundai car A B C D E F G
car Jauar car A B C D E F G
Jeep Mahindra Jeep X Y Z W Q W K
你能试试下面的吗
awk 'FNR==NR{a[$1]=$0;next} ($1 in a){print $0,a[$1]}' file2 file1 | column -t
输出如下
car Maruti car A B C D E F G
car TATA car A B C D E F G
car Hyundai car A B C D E F G
car Jaguar car A B C D E F G
Jeep Mahindra Jeep X Y Z W Q W K
你能试试下面的吗
awk 'FNR==NR{a[$1]=$0;next} ($1 in a){print $0,a[$1]}' file2 file1 | column -t
输出如下
car Maruti car A B C D E F G
car TATA car A B C D E F G
car Hyundai car A B C D E F G
car Jaguar car A B C D E F G
Jeep Mahindra Jeep X Y Z W Q W K
在这里使用
join
命令会更容易,这是专门为您这样的任务设计的。但是,join
需要排序的文件,所以我们先排序
使用bash
可以就地完成排序
join <(sort 1stFile) <(sort 2ndFile)
要对齐输出中的列,您可以使用
join…| column-t
在此处使用join
命令,这是专门为您这样的任务设计的。但是,join
需要排序的文件,所以我们先排序
使用bash
可以就地完成排序
join <(sort 1stFile) <(sort 2ndFile)
要对齐输出中的列,您可以使用
join…| column-t
输出必须完全按照该顺序,还是排序后的输出也可以接受?两个输出都可以接受。输出必须完全按照该顺序,还是排序后的输出也可以接受?两个输出都可以接受。