Bash 在linux中使用不同列合并两个文件

Bash 在linux中使用不同列合并两个文件,bash,sed,awk,Bash,Sed,Awk,我在linux中有两个文件,第一个文件有4列,第二个文件有2列。我想将这些文件合并到一个新文件中,该文件包含文件1的前3列和文件2的第一列。我尝试了awk,但文件2中的数据被放在文件1下。如果文件的行数相同,您可以执行以下操作: paste file1 file2 | awk '{print $1,$2,$3,$5}' awk '{ getline v < "file2"; split( v, a ); print a[2], $1, $3 }' file1 awk'{getline

我在linux中有两个文件,第一个文件有4列,第二个文件有2列。我想将这些文件合并到一个新文件中,该文件包含文件1的前3列和文件2的第一列。我尝试了awk,但文件2中的数据被放在文件1下。

如果文件的行数相同,您可以执行以下操作:

paste file1 file2 | awk '{print $1,$2,$3,$5}'
awk '{ getline v < "file2"; split( v, a ); print a[2], $1, $3 }' file1
awk'{getline v<“file2”;拆分(v,a);打印[2],$1,$3}'文件1

打印文件1中的列1和列3以及文件2中的列2。

不确定要从每个文件中打印哪些列,但类似的操作应该可以:

paste <file1> <file2> | awk '{print $1,$2,$3,$5}'
粘贴| awk'{打印$1、$2、$3、$5}'

前三列将从
file1
中选取,第四列将被跳过,然后从第二个文件中选取第一列。

如果您提供输入文件的示例以及您迄今为止尝试过的内容的说明,这将非常有帮助。对于逗号分隔的值,请使用
awk'{print$1'、“$2”、“$3}”
you can try this one without paste command:
awk '{print $1}{print $2}{print $3}' file1 >> mergedfile
awk '{print $2}' file2 >> mergedfile