linux - 连接文件 awk/linux

标签 linux awk concatenation

我在一个文件夹中有 n 个文件,这些文件以如下所示的行开头。

##contig=<ID=chr38,length=23914537>
##contig=<ID=chrX,length=123869142>
##contig=<ID=chrMT,length=16727>
##samtoolsVersion=0.1.19-44428cd
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  P922_120
chr1    412573  SNP74   A       C       2040.77 PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;DP=58;
chr1    602567  BICF2G630707977 A       G       877.77  PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;  
chr1    604894  BICF2G630707978 A       G       2044.77 PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;
chr1    693376  .       GCCCCC  GCCCC   761.73  .       AC=2;AC1=2;AF=1.00;AF1=1;

有n个这样的文件。我想将所有文件连接到一个文件中,以便从所有文件中删除所有以 # 开头的行,并将所有文件中的其余行连接起来,只保留标题行。示例输出如下所示:

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  P922_120
chr1    412573  SNP74   A       C       2040.77 PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;DP=58;
chr1    602567  BICF2G630707977 A       G       877.77  PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;  
chr1    604894  BICF2G630707978 A       G       2044.77 PASS    AC=2;AC1=2;AF=1.00;AF1=1;AN=2;DB;
chr1    693376  .       GCCCCC  GCCCC   761.73  .       AC=2;AC1=2;AF=1.00;AF1=1;

最佳答案

特别是 awk:

awk '$0!~/^#/{print $0}' file1 file2 file3 > outputfile

分解为检查行 ($0) 是否不匹配 (!~) 以 # (/^#/) 开头的字符串,如果是,则打印该行。您获取输入文件并写入 (>) 输出文件。

关于linux - 连接文件 awk/linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003988/

相关文章:

linux - RHEL 6.0 上的链接错误 : using gcc 4. 5.2 -- 我不明白

ruby - 每次在 linux 目录中创建新文件时运行一个进程

c++ - cmake如何找到包?

linux - 如何在awk中找到模式并在另一个字段中进行操作?

linux - 如何 grep 字符串并显示 Linux 文件中的前一个单词

mysql - 使用多个值更新和 CONCAT

c - 防止 make 删除从 .def 文件生成的源文件

使用管道的 Awk 打印在 Jupyter Notebook 中无法使用 iPython

rbind 联机目录中的 txt 文件 (R)

sql - 在 SQL 中连接计算字段