tonyhts
(usa Arch Linux)
Enviado em 26/08/2015 - 11:28h
amnesia escreveu:
Cara deu certo, perfeito, valeu mesmo!!
Só uma última coisa, se não for incomodar. Gostaria da explicação do comando o que cada parte dele faz exatamente, só para que eu possa entender e saber o que estou digitando!
Valeu mesmo! Obrigado!
Que bom!
Segue a explicação:
sed -ri '/^R18/ s/^(.{84})(.)(.*)$/\1\3/g' arquivo.txt
sed -ri : A opção
-r ativa o recurso de expressões regulares estendida. A opção
-i diz ao sed para realizar a alteração diretamente no arquivo original.
'/^R18/ : A primeira expressão entre as barras, diz ao sed para executar o comando a seguir somente nas linhas que a contém , no caso R18. O caractere
^ indica começo de linha.
Agora vamos ao comando. A sintaxe é
's/isso/por isso/g'. Onde
s significa substituir e
g significa global (em todas as ocorrências).
s/: Substituir
^: Começo de linha, seguido de :
(.{84}): 84 caracteres ( o .(ponto) em expressões regulares significa qualquer caractere. As Chaves determinam as quantidades, no caso 84. Os parenteses servem para agrupar pedaços da expressão. Logo, acabamos de formar o primeiro grupo (do começo da linha até o caractere numero 84)
(.) : Aqui formamos o 2segundo grupo (um caractere após o de numero 84, que no caso é o caractere 85)
(.*)$/ : O .(ponto) já sabemos que significa qualquer caractere, o
* (asterisco) é um meta-caractere ou WildCard, ele diz ao caractere a esquerda que pode ter 0 ou mais vezes, ou seja, qualquer coisa em qualquer quantidade. E o
$ significa fim da linha. Então acabamos de criar o terceiro grupo. (qualquer coisa até o fim da linha, contanto que que venha depois de 84 caracteres, seguido um caractere).
Pronto, fizemos o
"isso", agora vamos para o
"por isso":
\1\3/g' : Os grupos que criamos podem ser representados pelo
\numero (tecnicamente chamados de retrovisores). Então, a parte "por isso" do nosso comando fica assim: o primeiro grupo(\1) seguido do terceiro grupo(\3) ELIMINANDO o segundo grupo - O bendito caractere 85.
/g' : significa global (em todas as ocorrências), ou seja, todas as linhas no arquivo.
Em resumo, o comando substitui o grupo 1, 2 e 3 pelo grupo 1 e 3
Conseguiu entender?
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.
--- Mestre dos Mestres - Alan Turing ---