我有600个文件要合并/合并为一个。我已经在Mac终端上使用以下命令完成了此操作:
cat neutral_*.msOut.gz > neutral.msOut
每个文件具有以下格式:
// Initial random seed:
1824618124544
// RunInitializeCallbacks():
initializeMutationRate(0);
initializeMutationType(1, 0.5, "f", 0);
initializeGenomicElementType(1, m1, 1);
initializeGenomicElement(g1, 0, 1099999);
initializeRecombinationRate(1e-08);
// Starting run at generation <start>:
1
#WARNING (Subpopulation::ExecuteMethod_outputXSample): outputMSSample() should probably not be called from an early() event in a WF model; the output will reflect state at the beginning of the generation, not the end.
#OUT: 1 SM p3 208
//
segs: 3
positions: 0.0012,0.19383,0.18383
001
110
111
合并这些文件时,我不想在最终合并的文件中包括前15行(来自每个文件)。使用Mac终端如何实现?
答案 0 :(得分:4)
您需要先解压缩才能删除前15行
for i in neutral_*.msOut.gz
do
zcat $i | head -15 $i > neutral.msOut
break
done
for i in neutral_*.msOut.gz
do
zcat $i | sed -e 1,15d >> neutral.msOut
done
-q
option on osx的注释)neutral.msOut
答案 1 :(得分:2)
使用sed:
sed -e '1,15d' neutral_*.msOut.gz > neutral.msOut
但是从您的评论看来,您似乎也想解压缩文件。如果是这样:
for i in neutral_*.msOut.gz; do gzip -dc "$i" | sed -e 1,15d; done > neutral.msOut
答案 2 :(得分:0)
gunzip neutral_*.msOut.gz
#解压缩600个文件。tail -q -n '+16' neutral_*.msOut > neutral.msOut
#创建结果文本文件。-q
-防止每个文件片段前面都带有文件信息-n '+16'
-选择从第16行文本开始的尾部