您好我有两个制表符分隔的文本文件
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。
答案 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
或者只使用cat
和tail
:
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