Fechar.
Em j=$j + 200
, você precisa invocar explicitamente a expansão aritmética, ou seja, j=$(( j + 200 ))
.
E em sed -n '$i,$j p' big_file.txt > $ito$j.txt
, 1) você precisa usar aspas duplas em vez de aspas simples no argumento para sed
, pois senão o $
é considerado literalmente e as variáveis não serão expandidas; 2) você precisa de chaves ao redor de i
, pois $ito
seria uma expansão de variável válida.
Além disso, em contextos aritméticos, você não precisa (e provavelmente não deveria) usar o $
na frente do nome da variável.
Então, eu reescreveria isso como:
j=0
for (( i = 1 ; i <= 3801 ; i = i + 200)); do
j=$((j + 200))
sed -n "$i,$j p" big_file.txt > "${i}to$j.txt"
done
Como outros já comentaram, provavelmente há uma maneira melhor de fazer isso, já que agora você percorre o arquivo inteiro uma vez para cada parte que separa.