Preciso de um arquivo com o comando sed, tenho um arquivo como este
amb/eng/hello.amb
e preciso que a saída seja como abaixo
amx/eng/hello.amx
amx-grk/eng/hello.amx
Alguém poderia por favor me ajudar?
Preciso de um arquivo com o comando sed, tenho um arquivo como este
amb/eng/hello.amb
e preciso que a saída seja como abaixo
amx/eng/hello.amx
amx-grk/eng/hello.amx
Alguém poderia por favor me ajudar?
Você poderia usar
sed -e 's/amb/amx/gp' -e 's/amx/&-grk/' yourfile
.Ex.
Isso é semelhante à resposta do steeldriver , mas é um pouco mais rigoroso com a correspondência.
No comando acima, assumimos que estamos procurando linhas que começam
amb/
e terminam com.amb
. Quando tal linha é encontrada, o comando de substituição inicial executado altera essas duas substrings paraamx/
e.amx
, respectivamente, e então gera a linha modificada. A segunda substituição altera aamx
string inicial (que sabemos que está presente no início da linha) paraamx-grk
. O resultado desta segunda modificação é gerado pela saída padrão no final do ciclo.Estou usando vírgulas como delimitador para a expressão regular de acionamento no início do
sed
script e os
comando dentro do grupo de expressões entre chaves porque quero incluir uma barra nos comandos.Uma forma alternativa de escrever este comando exato é usar
b
("branch") como forma de não modificar nenhuma linha que não corresponda à expressão regular inicial. Isso nos permite escrever o comando como três expressões separadas:Você pode tentar seguir:
por exemplo