合并制表符分隔文件,不带标题

时间:2018-05-13 11:30:02

标签: shell awk

您好我有两个制表符分隔的文本文件

file.1.txt

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C

AND file.2.txt

Chr Start   End Ref Alt
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

现在,如果我想以这样的方式组合这两个文件,即排除第二个文件的标题行并将文件一个接一个地组合

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

如何使用awk命令或shell脚本执行此操作?

P.S。实际文件中的列数为168。

4 个答案:

答案 0 :(得分:1)

您可以使用以下awk

awk 'FNR > 1 || NR == 1' file1 file2

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

或者只使用cattail

cat file1; tail -n +2 file2

答案 1 :(得分:1)

关注awk也可以帮助您。

awk 'FNR==NR{print;next} FNR!=NR && FNR>1{print}' file1.txt file2.txt

或更确切地说,不需要FNR!=NR

awk 'FNR==NR{print;next} FNR>1{print}' file1.txt file2.tx

答案 2 :(得分:1)

另一个awk:

$ awk 'p<FNR;{p=FNR}' file1 file2

输出:

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

即。如果上一个FNR p小于当前值,则输出。

答案 3 :(得分:1)

任何不做的理由:

cat file1; tail +2 file2