Ajuda com o comando delete e sed

0

Analisei todas as postagens e não encontrei nada relacionado a esse exemplo específico. Meu arquivo / etc / aliases precisa de edição, mas como eu tenho o mesmo arquivo em mais de 100 hosts, quero apenas fazer o script e colocá-lo para funcionar. Eu tenho várias entradas de alias e em uma delas eu quero remover o usuário junto com o separador de vírgulas, assim:

alias_name1:    [email protected],[email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]

Então, se eu quiser remover apenas ", name2 @ example.com" em "alias_name1", mas não "alias_name2", como posso fazer isso, pois o único exemplo que tenho agora é remover a string do arquivo inteiro ou removê-la a string de uma linha específica # no arquivo e uma vez que alguns dos arquivos possuem um número diferente de linhas que também não funcionarão.

Obrigado.

    
por J Telep 06.07.2018 / 16:54

2 respostas

1

to remove just ",[email protected]" in "alias_name1" but not "alias_name2"

sed abordagem:

sed -E '/^alias_name1/ s/,name2@example\.com(,?)//' /etc/aliases

O truque com o 1º grupo capturado (...) também cobrirá casos em que ,[email protected] aparecer no final da linha ou no meio.

A saída:

alias_name1:    [email protected],[email protected]
alias_name2:    [email protected],[email protected],[email protected]
    
por 06.07.2018 / 17:02
0

Você pode começar um comando sed subsitution com um parâmetro de pesquisa:

sed '/search_string/ s/remove_string//'

O comando acima irá operar somente nas linhas que correspondem à /search_string/ regexp, substituindo uma string nula pelo que foi a coincidência remove_string .

    
por 06.07.2018 / 17:02

Tags