Suponha que eu tenha um arquivo com linhas
aaa = bbb
Agora eu gostaria de substituí-los por:
aaa = xxx
Eu posso fazer isso da seguinte maneira:
sed "s / aaa = bbb / aaa = xxx / g"
Agora eu tenho um arquivo com algumas linhas da seguinte maneira:
aaa = bbb aaa = ccc aaa = ddd aaa = [outra coisa]
Como posso substituir todas essas linhas aaa=[something]
pelo aaa=xxx
uso de sed ?
[something else]
texto é literal ou é apenas um espaço reservado? Qual é o formato possível da coisa após o sinal de igual?Respostas:
Tente o seguinte:
fonte
.*
.g
substitua toda a instância do regexp pela substituiçãoVocê também pode usar a linha de alteração do sed para fazer isso:
Isso examinará e encontrará as linhas que passam no
aaa=
teste, o que significa que a linha contém as letrasaaa=
. Em seguida, substitui a linha inteira por aaa = xxx. Você pode adicionar um^
no início do teste para garantir que você só obtenha as linhas que começam,aaa=
mas isso é com você.fonte
sed
precisac
ser seguido por uma barra invertida e uma nova linha, e não anexa uma nova linha ao texto inserido, mas você pode usar, por exemplo$'/aaa=/c\\\naaa=xxx\n'
.Como isso:
Se você deseja garantir que
aaa=
está no início da linha, faça-o:fonte
sed 's/aaa=.*/aaa=\'xxx\'/'
, mas que abre um>
prompt de uma nova linha de ...Se você gostaria de usar
awk
, isso também funcionariafonte
fonte
Isso pode funcionar para você:
fonte
bbb
,ccc
eddd
é exatamente o que o OP tinha em mente.