Awk 将一列多个文件追加到一个输出文件

Awk 将一列多个文件追加到一个输出文件,awk,linux-kernel,gawk,Awk,Linux Kernel,Gawk,假设我有三个文件 文件1 文件2 1 14.0 2 11.0 3 12.0 文件3 我想把这些文件合并成一个输出 输出文件 10.0 14.0 9.0 13.0 12.0 11.0 14.0 12.0 4.0 所有文件的行数都相同。需要将每个文件的第二列添加到输出文件中 值需要用一个空格分隔 我想学习如何对多个文件执行此操作,在awk或linux终端中最多4个文件。鉴于您的新问题: $ paste file1 file2 file3 | awk '{print $2,$4,$6}' 1

假设我有三个文件

文件1

文件2

1  14.0
2  11.0
3  12.0
文件3

我想把这些文件合并成一个输出

输出文件

10.0 14.0 9.0
13.0 12.0 11.0
14.0 12.0 4.0
所有文件的行数都相同。需要将每个文件的第二列添加到输出文件中

值需要用一个空格分隔


我想学习如何对多个文件执行此操作,在awk或linux终端中最多4个文件。

鉴于您的新问题:

$ paste file1 file2 file3 | awk '{print $2,$4,$6}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0
为了避免硬编码awk部件中的字段号,以便它可以与paste的任何输出一样工作:

$ paste file1 file2 file3 | awk '{for (i=2;i<=NF;i+=2) printf "%s%s",$i,(i<NF?OFS:ORS)}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0

$paste file1 file2 file3 | awk'{for(i=2;i针对您的新问题:

$ paste file1 file2 file3 | awk '{print $2,$4,$6}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0
为了避免硬编码awk部件中的字段号,以便它可以与paste的任何输出一样工作:

$ paste file1 file2 file3 | awk '{for (i=2;i<=NF;i+=2) printf "%s%s",$i,(i<NF?OFS:ORS)}'
10.0 14.0 9.0
13.0 11.0 11.0
14.0 12.0 4.0

$paste file1 file2 file3 | awk'{for(i=2;i如果运行linux,请尝试使用paste命令

paste -d " " file1 file2  > file3

如果运行linux,请尝试使用粘贴命令

paste -d " " file1 file2  > file3
连接取决于索引列和间距

cat file* | awk '{ if( $1 in x ) { x[$1] = x[$1] " "  $2; } else { x[$1] = $2;}} END{ for( i in x ) { print x[i]; }}' > outputfile
假设所有输入文件都有相同的前缀,并且所有文件都根据索引列值(即$1)(而不仅仅是行索引)进行连接

连接取决于索引列和间距

cat file* | awk '{ if( $1 in x ) { x[$1] = x[$1] " "  $2; } else { x[$1] = $2;}} END{ for( i in x ) { print x[i]; }}' > outputfile

假设所有输入文件都有相同的前缀,并且所有文件都根据索引列值(即$1)(而不仅仅是行索引)进行连接。

对于
N
文件列表1.txt、列表2.txt中相同格式的文件数

paste list?.txt | awk '{line=sep=""; for(i=2;i<=NF;i+=2) {line = line sep $i; sep=FS} print line}'

paste list?.txt | awk'{line=sep=”“;for(i=2;ifor
N
files list1.txt、list2.txt中相同格式的文件数

paste list?.txt | awk '{line=sep=""; for(i=2;i<=NF;i+=2) {line = line sep $i; sep=FS} print line}'

paste list?.txt | awk'{line=sep=”“;for(i=2;i使用bash的进程替换和join命令:

join <(join file1 file2) file3 | cut -d" " -f2-
使用awk,您可以编写:

awk '
    {result[FNR] = result[FNR] $2 FS} 
    END {for (i=1; i<=FNR; i++) print result[i]}
' file[123]
awk'
{result[FNR]=result[FNR]$2 FS}

结束{for(i=1;i使用bash的进程替换和join命令:

join <(join file1 file2) file3 | cut -d" " -f2-
使用awk,您可以编写:

awk '
    {result[FNR] = result[FNR] $2 FS} 
    END {for (i=1; i<=FNR; i++) print result[i]}
' file[123]
awk'
{result[FNR]=result[FNR]$2 FS}

结束{for(i=1;iw为什么这个代码:
join-o 1.2,2.2,3.2 file1 file2 file3>outputfile
not work?为了组合两个以上的文件
paste file1 file2 file3 | awk'{print$2,$4,$6}“>outputfile
对我有用谢谢为什么这个代码:
join-O1.2,2.2,3.2 file1 file2 file3>outputfile
not work?为了组合两个以上的文件
paste file1 file2 file3 | awk'{print$2,$4,$6}”“>outputfile
为我工作,感谢有3个文件要加入。请相信原始问题只有2个文件。我的错误。否决票已撤销。不过,您应该修改您的答案,因为它不再回答问题。有3个文件要加入。请相信原始问题只有2个文件。我的错误。否决票已撤销。不过,您应该修改您的答案,因为它没有回答问题的时间更长。有3个文件要加入。@glenn最初提问时没有加入。有3个文件要加入。@glenn最初提问时没有加入。