adăugând linii suplimentare după fiecare linie într-un fișier

adăugând linii suplimentare după fiecare linie într-un fișier

Am nevoie de ajutor pentru următoarea sarcină pentru fișierul de aproximativ 1000 de linii.

INTRARE

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

IEȘIRE

    ./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 IEȘIRE 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.* 
    ...

Cum sa faci restul? Mulțumesc mult anticipat.

1
Puteți lua în considerare scrierea unei buclă pentru a obține ceea ce aveți nevoie.
adăugat autor Bernhard, sursa

7 răspunsuri

Ai fost aproape acolo:

$ 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
adăugat

Ai fost aproape acolo:

$ 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
adăugat

Ai fost aproape acolo:

$ 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
adăugat

Încercarea mea:

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

care dă:

./create.pl 1eaj.out && mv complex.* 1eaj
./create.pl 1ezg.out && mv complex.* 1ezg
./create.pl 1f41.out && mv complex.* 1f41
3
adăugat
Wow skwllsp. Mulțumesc mult. Lucrează bine.
adăugat autor user2176228, sursa

Utilizați spații albe sau puncte ca delimitator pentru a extrage cuvântul de care aveți nevoie:

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

Utilizați spații albe sau puncte ca delimitator pentru a extrage cuvântul de care aveți nevoie:

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

Utilizați spații albe sau puncte ca delimitator pentru a extrage cuvântul de care aveți nevoie:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename
2
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.