Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 在第1列的基础上打印两个文件_Awk_Sed - Fatal编程技术网

Awk 在第1列的基础上打印两个文件

Awk 在第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此命令的输出仅打印一次数据,而不是按完美顺序打印

我有两个多行的文件。 第一个文件有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  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

输出必须完全按照该顺序,还是排序后的输出也可以接受?两个输出都可以接受。输出必须完全按照该顺序,还是排序后的输出也可以接受?两个输出都可以接受。