agregando líneas adicionales después de cada línea en un archivo

agregando líneas adicionales después de cada línea en un archivo

Necesito ayuda para la siguiente tarea para alrededor de 1000 líneas de archivo.

ENTRADA

    ./create.pl     1eaj.out
    ./create.pl     1ezg.out
    ./create.pl     1f41.out
    ...

SALIDA

    ./create.pl     1eaj.out
    mv complex.* 1eaj
    ./create.pl     1ezg.out
    mv complex.* 1ezg
    ./create.pl     1f41.out
    mv complex.* 1f41
    ...

I know following command can add the new line and first part which makes the SALIDA like below.

    awk ' {print;} NR % 1 == 0 { print "mv complex.*  "; }'

    ./create.pl     1eaj.out
    mv complex.* 
    ./create.pl     1ezg.out
    mv complex.* 
    ./create.pl     1f41.out
    mv complex.* 
    ...

¿Cómo hacer el resto? Muchas gracias por adelantado.

1
Podría considerar escribir un bucle para lograr lo que necesita.
agregado el autor Bernhard, fuente

7 Respuestas

Estabas casi allí:

$ awk '{print $1, $2, "\nmv complex.*", $2}' file
./create.pl 1eaj.out 
mv complex.* 1eaj.out
./create.pl 1ezg.out 
mv complex.* 1ezg.out
./create.pl 1f41.out 
mv complex.* 1f41.out
3
agregado

Estabas casi allí:

$ awk '{print $1, $2, "\nmv complex.*", $2}' file
./create.pl 1eaj.out 
mv complex.* 1eaj.out
./create.pl 1ezg.out 
mv complex.* 1ezg.out
./create.pl 1f41.out 
mv complex.* 1f41.out
3
agregado

Estabas casi allí:

$ awk '{print $1, $2, "\nmv complex.*", $2}' file
./create.pl 1eaj.out 
mv complex.* 1eaj.out
./create.pl 1ezg.out 
mv complex.* 1ezg.out
./create.pl 1f41.out 
mv complex.* 1f41.out
3
agregado

Mi intento:

sed -n 's/^\(\.\/create\.pl\)\s*\(.*\)\.out$/\1 \2.out\nmv complex.* \2/p' s.txt

or using && between ./create.pl and mv (since mv is likely needed only when ./create.pl is correctly executed):

sed -n 's/^\(\.\/create\.pl\)\s*\(.*\)\.out$/\1 \2.out \&\& mv complex.* \2/p' s.txt

lo que da:

./create.pl 1eaj.out && mv complex.* 1eaj
./create.pl 1ezg.out && mv complex.* 1ezg
./create.pl 1f41.out && mv complex.* 1f41
3
agregado
Wow skwllsp. Muchas gracias. Está funcionando bien.
agregado el autor user2176228, fuente

Use espacios en blanco o puntos como delimitador para extraer la palabra que necesita:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename
2
agregado

Use espacios en blanco o puntos como delimitador para extraer la palabra que necesita:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename
2
agregado

Use espacios en blanco o puntos como delimitador para extraer la palabra que necesita:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename
2
agregado