mac unix脚本问题
我试图编写一个脚本,将一个非常大的文件分解成更小的部分,然后发送到后台运行的脚本。其动机是,如果脚本在后台运行,我可以并行运行 这是我的代码,./seq的工作原理与普通的seq命令(mac没有)。1美元是要拆分的巨大文件mac unix脚本问题,unix,scripting,awk,Unix,Scripting,Awk,我试图编写一个脚本,将一个非常大的文件分解成更小的部分,然后发送到后台运行的脚本。其动机是,如果脚本在后台运行,我可以并行运行 这是我的代码,./seq的工作原理与普通的seq命令(mac没有)。1美元是要拆分的巨大文件 echo "Splitting and Running Script" for i in $(./seq 0 14000000 500000) do awk ' { if (NR>='$i' && NR<'$(($i+500000))') {
echo "Splitting and Running Script"
for i in $(./seq 0 14000000 500000)
do
awk ' { if (NR>='$i' && NR<'$(($i+500000))') { print $0 > "xPart'$i'" } }' $1
python FastQ2Seq.py xPart$i &
done
wait
echo "Concatenating"
for k in *.out.seq
do
cat $k >> original.seq
done
for j in *.out.qul
do
cat $j >> original.qul
done
echo "Cleaning"
rm xPart*
echo“拆分并运行脚本”
对于i,单位为美元(./seq 0 14000000 500000)
做
awk'{if(NR>='$i'&&NR“xPart'$i'}}}'$1
python FastQ2Seq.py xPart$i&
完成
等待
回声“连接”
对于k in*.out.seq
做
cat$k>>原件.seq
完成
对于j in*.out.qul
做
cat$j>>original.qul
完成
回声“清洗”
rm xPart*
我的问题是,只生成了xPart0,在程序挂起之前它只有499995行。我在脚本中添加了一些调试回音,我知道awk语句是停止脚本的原因。我只是不知道出了什么问题。查看该命令--
应该比在循环中运行awk更快、更可靠、更干净!如果您的seq确实像标准seq一样工作,那么您就错了。seq的正确命令行是:
echo "Splitting and Running Script"
# splits to smaller files each 50000 lines, if i understand your problem correctly
awk 'NR%50000==1{++c}{print $0 > "xPart"c".txt"}' file
# or use split -l 50000
for file in xPart*
do
python FastQ2Seq.py "$file" &
done
echo "Concatenating"
cat *.out.seq >> original.seq
cat *.out.qul >> original.qul
seq FIRST INCREMENT LAST
因此,您需要将seq命令行更改为:
seq 0 500000 14000000
你为什么不能使用
split-l 500000
?OSX没有使用seq
,而是使用jot
。或者,在Bash中,for((i=0;isplit太慢了。我的文件是3.6GB,split无法处理它。Tch。至少指向正确的手册页:P这非常接近。我最后做了awk{if(NR%500000==1){c}{print$0>“xPart”c}$1}
seq 0 500000 14000000