Редактирование файла конфигурации в Linux с помощью команды sed - PullRequest
0 голосов
/ 04 сентября 2018

Здесь vanity - это переменная, и мне нужно поместить содержимое этой переменной в конец строки, начиная с первого вхождения слова "members", с помощью команды sed

#!/bin/bash
vanity=$()

файл testing.txt содержит следующую информацию:

define hostgroup{
        hostgroup_name  NA-servers ; The name of the hostgroup
        alias           NA region ; Long name of the group
        members         abc.com,def.com,ghi.com,jkl.com
        }

define hostgroup{
        hostgroup_name  SA-servers ; The name of the hostgroup
        alias           SA region ; Long name of the group
        members         abcd.com,defg.com,ghij.com,jklm.com
        }

Я пробовал эту команду:

sed "1,/members/s/$/,$vanity/" testing.txt

но он возвращает следующий вывод:

define hostgroup{,mno.com
        hostgroup_name  NA-servers ; The name of the hostgroup,mno.com
        alias           NA region ; Long name of the group,mno.com
        members         abc.com,def.com,ghi.com,jkl.com,mno.com
        }

Требуемый вывод:

define hostgroup{
        hostgroup_name  NA-servers ; The name of the hostgroup
        alias           NA region ; Long name of the group
        members         abc.com,def.com,ghi.com,jkl.com**,mno.com**
        }

define hostgroup{
        hostgroup_name  SA-servers ; The name of the hostgroup
        alias           SA region ; Long name of the group
        members         abcd.com,defg.com,ghij.com,jklm.com
        }

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Другой подход с GNU sed для добавления значения только к первому вхождению:

sed '0,/members.*/{s//&'"$vanity"'/;}' file

Если у вас не установлен GNU sed, попробуйте этот POSIX-совместимый:

sed '1,/members.*/{s/members.*/&'"$vanity"'/;}' file
0 голосов
/ 04 сентября 2018

С GNU sed:

sed '/NA-servers/,/}/{s/members.*/&,mno.com/}' file

Выход:

define hostgroup{
        hostgroup_name  NA-servers ; The name of the hostgroup
        alias           NA region ; Long name of the group
        members         abc.com,def.com,ghi.com,jkl.com,mno.com
        }

define hostgroup{
        hostgroup_name  SA-servers ; The name of the hostgroup
        alias           SA region ; Long name of the group
        members         abcd.com,defg.com,ghij.com,jklm.com
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...