将大文本文件合并在一起

时间:2014-08-18 18:30:56

标签: bash unix cat fastq

我正在将多个文件(每个~1 gig)合并到一个文件中,但合并的文件不完整。当将b连接到a时,b在中间某处连接而不是结束。 我正在运行的命令是:

for f in $x/*/y/*.fastq; do

    fullpath=`echo $(readlink -f $f)`
    basename=`echo "${fullpath##*/}"`
    pathname=`echo "${fullpath%/*}"`
    name=`echo "$basename"|sed 's/-_-.*//'`

    cat $f>>$x/z/${name}.fastq

done

另外

names=$(cut -f 3 $B)
names=$(echo "${names[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')
for name in ${names[@]}; do
    cat $x/*/y/${name}-_-*.fastq>$x/z/${name}.fastq
done

在我检查文件之后,合并文件的大小比原始文件小,并且在中间某处连接。

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

#!/bin/bash
shopt -s nullglob
for f in "$x"/*/y/*.fastq; do
    fullpath=$(readlink -f "$f")
    basename=${fullpath##*/}
    pathname=${fullpath%/*}
    name=${basename%%-_-*}
    dest=$x/z/$name.fastq
    echo "$f >> $dest"
    cat "$f" >> "$dest"
done