Acrescentar palavra no final da linha com sed [duplicado]

5

Eu tenho um bloco de código como segue em um arquivo:

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2

Eu quero pesquisar todas as linhas que tinham tc_ keyword e adicionar status=D no final dessas linhas. Então, as entradas acima se tornarão assim

BalancerMember http://snode1:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode1 status=D
BalancerMember http://snode2:80 min=1 max=1000 loadfactor=1  timeout=30 keepalive=on route=tc_snode2 status=D

Estou usando o seguinte comando para conseguir isso:

sed -i '/tc_/a status=D' app.conf

Mas posso ver que status=D está sendo depois de uma nova linha. Eu não quero uma nova linha para isso. Deve ser anexado com um ' ' (espaço).

    
por Zama Ques 07.12.2016 / 12:29

1 resposta

14

tente

sed  -e '/tc_/s/$/ status=D/'

onde

  • /tc_/ na linha em que tc_ é encontrado,
  • s substituto,
  • /$ fim da linha,
  • / status=D/ por esta string

se estiver correto, adicione -i para editar no lugar.

    
por 07.12.2016 / 12:37