додавання додаткових рядків після кожного рядка у файлі

додавання додаткових рядків після кожного рядка у файлі

Мені потрібна допомога для виконання наступного завдання для файлу близько 1000 рядків.

INPUT

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

ВИХІД

    ./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 ВИХІД 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.* 
    ...

Як зробити все інше? Спасибі багато заздалегідь.

1
Ви можете розглянути можливість написання циклу для досягнення того, що вам потрібно.
додано Автор Bernhard, джерело

7 Відповіді

Ви були майже там:

$ 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
додано

Ви були майже там:

$ 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
додано

Ви були майже там:

$ 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
додано

Моя спроба:

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

який дає:

./create.pl 1eaj.out && mv complex.* 1eaj
./create.pl 1ezg.out && mv complex.* 1ezg
./create.pl 1f41.out && mv complex.* 1f41
3
додано
Вау сквульшп. Дуже дякую. Це добре працює.
додано Автор user2176228, джерело

Використовуйте пробіл чи точку як роздільник, щоб витягти потрібне вам слово:

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

Використовуйте пробіл чи точку як роздільник, щоб витягти потрібне вам слово:

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

Використовуйте пробіл чи точку як роздільник, щоб витягти потрібне вам слово:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename
2
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;