Unix的。连接具有相似名称模式但顺序不同的编号的文件

时间:2018-02-14 20:17:46

标签: unix concatenation

在目录中,我有数千个文件。其中一些名称包含geno_chr1_all.txtgeno_chr2_all.txtgeno_chr3_all.txt等名称。

geno_chr1_all.txt

1 2 3 4
2 4 5 6

geno_chr2_all.txt

2 5 6 7 
1 1 2 2 

geno_chr3_all.txt

8 8 8 8 
0 9 0 9 

我想按照1,2,3,...使用Unix命令给出的顺序(通过列)连接这些文件的内容。然后,我想创建一个包含以下内容的文件output_file.txt

output_file.txt

1 2 3 4
2 4 5 6
2 5 6 7 
1 1 2 2 
8 8 8 8 
0 9 0 9 

任何建议都会受到欢迎!

1 个答案:

答案 0 :(得分:1)

$ echo "1  1  1" > geno_chr1_all.txt
$ echo "2  2  2" > geno_chr2_all.txt
$ echo "3  3  3" > geno_chr3_all.txt
$ echo "10 10 10" > geno_chr10_all.txt

使用?表示每个文件名中的数字

$ cat geno_chr?_all.txt geno_chr??_all.txt > outputfile.txt
$ cat outputfile.txt
1  1  1
2  2  2
3  3  3
10 10 10

?表示单个字符,而??表示两个字符,依此类推......在这种情况下,它表示排序数字。如果有一千个文件,可以这样做:

$ cat geno_chr?_all.txt geno_chr??_all.txt geno_chr???_all.txt geno_chr????_all.txt > outputfile.txt

您还可以使用shell扩展{..}来表示所有相关文件,

$ cat geno_chr{?,??,???,????}_all.txt