
		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 ---