как вставить рядом со строкой - PullRequest
0 голосов
/ 25 марта 2011

У меня есть файл в этом формате

имя машины host1
что-то здесь1

имя машины host1
somethingelse2

Мне нужно изменить это как

имя машины host1

установить имя пользователя 1000

что-то здесь1

имя машины host1
установить имя пользователя 1001

somethingelse2

Мне нужно найти строку «имя машины host1» и вставить строку «установить имя пользователя с инкрементным значением» для всего вхождения рядом с ним.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011
awk -v user=1000 '
  {print} 
  /machine name host1/ {printf("set username %d\n", user++)}
' filename

Я передаю значение "seed" для имени пользователя с помощью опции -v в awk

2 голосов
/ 25 марта 2011

Использование однострочного Perl (при условии, что имя файла с данными называется 'machines':

perl -n -i.bak -e '$i=999 if !$i;
            if (m/machine name host1/) {
               $i++;
               $_ = "$_\nset username $i\n";
            };
            print;' machines

Обратите внимание, что сам файл будет изменен и будет создан файл резервной копии с расширением .bak

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...