mac unix脚本问题

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))') {

我试图编写一个脚本,将一个非常大的文件分解成更小的部分,然后发送到后台运行的脚本。其动机是,如果脚本在后台运行,我可以并行运行

这是我的代码,./seq的工作原理与普通的seq命令(mac没有)。1美元是要拆分的巨大文件

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