sed

Como substituir a última ocorrência usando 'sed'

Como substituir a última ocorrência usando 'sed'
O comando 'sed' é usado no Linux para vários tipos de operações de texto, como inserir, excluir, substituir, etc. Diferentes tipos de tarefas de substituição podem ser feitos usando o comando 'sed' facilmente. Qualquer tarefa de substituição pode ser feita com base no texto ou padrão de pesquisa. A pesquisa de texto ou padrão pode ocorrer várias vezes na string ou em um arquivo onde a pesquisa será feita. Como você pode substituir a última ocorrência do texto ou padrão de pesquisa foi mostrado neste tutorial.

Substitua a última ocorrência do texto em uma string:

Esta seção mostra como a última ocorrência do padrão de pesquisa em uma string pode ser substituída usando o comando 'sed'.

Exemplo-1: Substitua a última ocorrência de uma palavra com base no padrão

O seguinte comando 'sed' irá pesquisar a palavra 'PHP' na string e substitua a palavra pesquisada pela palavra 'AngularJS' se a palavra existe na string.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's / \ (.* \) PHP / \ 1AngularJS / '

A seguinte saída aparecerá após a execução do comando. Aqui a palavra 'PHP' existe duas vezes na string, e a última ocorrência foi substituída pela palavra ' AngularJS'.

Exemplo-2: Substitua a última ocorrência do padrão baseado em dígitos

O seguinte comando 'sed' irá pesquisar qualquer dígito na string e substituir o último dígito pelo número 9.

$ echo "O primeiro valor 2 do contador. O segundo valor do contador 4 "|
sed 's / \ (.* \) [0-9]) * / \ 19 / '

A seguinte saída aparecerá após a execução do comando. Aqui, o dígito aparece duas vezes na string, e o último dígito, 4, foi substituído pelo número 9.

Exemplo 3: Substitua o último dígito de um número com base no padrão

O seguinte comando 'sed' substituirá o último dígito que existe no valor da string pelo valor de zero duplo (0 0).

$ echo "O preço do produto é $ 500."| sed 's / \ (.* \) [0-9] / \ 100 / '

A seguinte saída aparecerá após a execução do comando. Aqui, 500 existe no valor da string. Então, de acordo com o comando de substituição, o último zero de 500 foi substituído por dois zero duplo, e o valor substituído é 5000.

Exemplo 4: Substitua a última ocorrência de uma palavra por outra palavra

O seguinte comando 'sed' irá pesquisar a palavra 'Junho' na string e substitua a última ocorrência da palavra pelo valor, 'Maio'.

$ printf "% s \ n" Jan Fev Jun Abr Jun Dez | tr '\ n' "|
sed 's / \ (.* \) Jun / \ 1Maio / '| tr "'\ n'

A seguinte saída aparecerá após a execução do comando. Aqui a palavra 'Junho' existe duas vezes na string, e a última ocorrência foi substituída pela palavra 'Maio'.

Substitua a última ocorrência de um texto em um arquivo:

Crie um arquivo de texto chamado Vendas.TXT com o seguinte conteúdo para testar o comando 'sed' usado nesta parte do tutorial para substituir a última ocorrência de um texto baseado no padrão.

Vendas.TXT

Mês Ano Montante
Janeiro de 2018 $ 200.000
Março de 2019 $ 300.000
Abril de 2019 $ 150000
Março de 2020 $ 350000
Maio de 2019 $ 210000
Janeiro de 2020 $ 240000

Exemplo 5: Substitua a última ocorrência de uma palavra por outra palavra

O seguinte comando 'sed' irá pesquisar a palavra 'Janeiro'no arquivo e substitua a última ocorrência desta palavra pela palavra, 'Julho'.

Vendas de $ cat.TXT
$ sed '$ s / Janeiro / Julho /' Vendas.TXT

A seguinte saída aparecerá após a execução dos comandos. A palavra 'Janeiro' aparece duas vezes no arquivo. A última ocorrência que existe no 7º linha do arquivo foi substituída pela palavra 'Julho'na saída.

Exemplo 6: Substitua a última ocorrência de um número por outro número

'tac' comando é usado para reverter o conteúdo do arquivo. 'tac' comando é usado com o comando 'sed' no seguinte comando para substituir a última ocorrência de '2019'com a palavra, '2017'.

Vendas de $ cat.TXT
Vendas $ tac.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

A seguinte saída aparecerá após a execução dos comandos. Aqui, o valor do ano, '2019'aparece três vezes no arquivo. O primeiro, 'tac' comando reverteu o conteúdo do arquivo e enviou a saída para o 'sed' comando para substituir a primeira ocorrência de '2019' qual é a última ocorrência no arquivo pelo valor do ano, '2017'. Após a substituição, a saída foi enviada para o 'tac' comando para reverter a saída novamente. Desta forma, a última ocorrência de '2019'foi substituído pelo valor, '2017'.

Exemplo 7: Substitua tudo de uma linha com base na última ocorrência de uma palavra

Os seguintes 'sed' o comando irá substituir a linha por um texto delimitado por tabulação (\ t) onde a linha começa com a string 'Março' pela última vez no arquivo.

Vendas de $ cat.TXT
Vendas $ tac.txt | sed '0, / ^ março.* / s / ^ março.* / Julho \ t \ t2018 \ t $ 400000 / '| tac

A seguinte saída aparecerá após a execução dos comandos. Duas linhas no arquivo começam com a string, 'Março', e a última ocorrência desta string aparece no 5º linha. O primeiro 'tac' comando foi usado para reverter o conteúdo do arquivo e enviou a saída para o 'sed ' comando. 'sed'comando substituiu a linha por um texto,'Julho de 2018 $ 400.000'onde a string pesquisada foi encontrada pela primeira vez. A saída de o 'sed'comando foi enviado para o 'tac' comando novamente para reverter a saída que é o conteúdo principal do arquivo.

Conclusão:

O comando 'sed' pode ser usado para substituir qualquer parte de uma string ou uma linha do arquivo de diferentes maneiras usando padrões de expressão regular. Este tutorial mostrou as maneiras de substituir a última ocorrência do texto pesquisado em uma string ou arquivo usando vários comandos 'sed'. Como o comando 'tac' pode ser usado com o comando 'sed' para substituir a última ocorrência do texto pesquisado também foi mostrado neste tutorial. Mas todos os comandos usados ​​aqui irão gerar a saída temporariamente. Você deve usar a opção '-i' com o comando 'sed' para alterar o conteúdo do arquivo permanentemente com base no padrão.

5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...