シェルスクリプト:正しい変数型

シェルスクリプト:正しい変数型

変数をどのように書くのかわかりません。sed

したがって、forループを使用して次のことをしたいと思います。

sed -n '1,200p' big_file.txt> 1to200.txt
sed -n '201,400p' big_file.txt> 201to400.txt
sed -n '401,600p' big_file.txt> 401to600.txt
sed -n '601,800p' big_file.txt> 601to800.txt
sed -n '801,1000p' big_file.txt> 801to1000.txt
sed -n '1001,1200p' big_file.txt> 1001to1200.txt
sed -n '1201,1400p' big_file.txt> 1201to1400.txt
sed -n '1401,1600p' big_file.txt> 1401to1600.txt
sed -n '1601,1800p' big_file.txt> 1601to1800.txt
sed -n '1801,2000p' big_file.txt> 1801to2000.txt
sed -n '2001,2200p' big_file.txt> 2001to2200.txt
sed -n '2201,2400p' big_file.txt> 2201to2400.txt
sed -n '2401,2600p' big_file.txt> 2401to2600.txt
sed -n '2601,2800p' big_file.txt> 2601to2800.txt
sed -n '2801,3000p' big_file.txt> 2801to3000.txt
sed -n '3001,3200p' big_file.txt> 3001to3200.txt
sed -n '3201,3400p' big_file.txt> 3201to3400.txt
sed -n '3401,3600p' big_file.txt> 3401to3600.txt
sed -n '3601,3800p' big_file.txt> 3601to3800.txt
sed -n '3801,4000p' big_file.txt> 3801to4000.txt

私が試したこと:

j=0
for ((i=1;i<=3801;i=$i+200))
do
    #echo $m,$n
    j=$j + 200
    sed -n '$i,$j p' big_file.txt  > $ito$j.txt 
done

私がこれをするのを手伝ってください。説明をお願いします。

ベストアンサー1

sedを呼び出す代わりに、awkプログラムを使用してこれを行います。窒素移流

awk '
    BEGIN {incr = 200; i=1-incr; j=0}
    NR % incr == 1 {
        i += incr
        j += incr
        close(out)
        out = i "to" j ".txt"
    }
    {print > out}
' big_file.txt

大容量ファイルを 4000¼200=20 回ではなく 1 回だけ処理すればよいので、速度が速くなります。

おすすめ記事