com awk
:
awk '{print $0 > "dir"NR"/textfile"}' datafile
-
NR
se expande para o número do registro atual, portanto, cada linha será salva emdir<line_number>/textfile
, por exemplo, a primeira linha seria salva emdir1/textfile
, a segunda seria emdir2/textfile
e assim por diante.
Não há necessidade do dispendioso while
de loop pelas linhas do arquivo e da operação:
i=1; while IFS= read -r line; do echo "$line" >dir"$i"/textfile; ((i++)); done <datafile
A forma de shell acima é apenas para mostrar o método, você deve seguir a awk
way.
Edite com base no comentário:
Para substituir todos os 400
s pelos números necessários de datafile
:
i=1; while IFS= read -r line; do sed "s/400/$line/g" dir"$i"/textfile; ((i++)); done <datafile
Para editar os arquivos no local:
i=1; while IFS= read -r line; do sed -i "s/400/$line/g" dir"$i"/textfile; ((i++)); done <datafile
Arquivos originais cujo backup foi feito com .bak
extension:
i=1; while IFS= read -r line; do sed -i.bak "s/400/$line/g" dir"$i"/textfile; ((i++)); done <datafile