tengo un archivo que tiene fila
file1 -int sch1.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
Quiero repetir esta fila 100 veces con este cambio (sch2, sch3, sch4 etc)
file1 -int sch2.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
file1 -int sch3.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
file1 -int sch4.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
Cómo puedo hacer esto.
Muchas gracias de antemano. Rehan
Respuesta1
printf 'file1 -int sch%s.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR\n' {1..100}
O:
seq -f 'file1 -int sch%g.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR' 100
O:
jot -w 'file1 -int sch%d.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR' 100
Produciría toda la producción.
Si quisieras empezar con eso:
file1 -int sch1.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
line en vim, y reproducirlo con el segundo número de la línea aumentado 99 veces, lo podrías hacer qayypw^Aq98@a
con el cursor posicionado en esa línea.
Dónde:
qa
: comienza a grabar laa
macroyy
: tira (copia) toda la línea.p
: lo pega debajow
: pasa a la siguiente palabra (para omitir la primera que también contiene un número).^A
(Ctrl+A): incrementa el número debajo del cursor o si no hay ningún número debajo del cursor, el siguiente que se encuentra a su derecha.q
: terminar de grabar la macro98@a
: ejecuta laa
macro 98 veces.
O siempre que file1 -int <something><number>.inp
se encuentre al comienzo de una línea, reproduzca la línea 100 veces con el número aumentado:
perl -pe 'if (m{^file1 -int \S*?\K\d+(?=\.inp)}) {
for my $i ($& .. $& + 99) {
print;
s//$i/;
}
}' < your-file
Respuesta2
Esta respuesta se basa en la pregunta actual:
#!/bin/bash
string=$(cat infile)
echo "$string" > outfile
string=${string/sch1/sch%d}
for ((i=2; i<101; i++))
do
printf "$string\n" "$i" >> outfile
done
# uncomment to overwrite input file
# mv outfile infile
La siguiente respuesta se basa en la pregunta original del OP, no en la pregunta actual. El OP aceptó esta respuesta como correcta.
#!/bin/bash
string=$(cat infile)
echo "$string" > outfile
for ((i=2; i<101; i++))
do
echo "${string/sch1/sch"$i"}" >> outfile
done
# uncomment to overwrite input file
# mv outfile infile