Explicou instrução de shell
Pergunta
A instrução a seguir irá remover números de linha em um arquivo txt:
cat withLineNumbers.txt | sed 's/^.......//' >> withoutLineNumbers.txt
O arquivo de entrada é criado com a seguinte declaração (este eu sei):
nl -ba input.txt >> withLineNumbers.txt
Eu sei que a funcionalidade de gato e sei que o resultado é escrito para o 'withoutLineNumbers.txt' arquivo.Mas a parte do '| sed 's/^.......//''
não é muito claro para mim.
Obrigado pelo seu tempo.
Solução
Que sed expressão regular simplesmente remove os 7 primeiros caracteres de cada linha.A expressão regular ^.......
diz que "Qualquer 7 caracteres no início da linha." O sed argumento s/^.......//
substitui o acima expressão regular com uma cadeia de caracteres vazia.
Consulte o sed(1)
página de man para mais informações.
Outras dicas
que sed declaração diz a excluir o primeiro de 7 caracteres.um ponto "." significa qualquer caractere.Há uma maneira ainda mais fácil de fazer isso
awk '{print $2}' withLineNumbers.txt
você apenas tem de imprimir a 2ª coluna usando awk.Não há necessidade de usar regex
se os seus dados tiverem espaços,
awk '{$1="";print substr($0,2)}' withLineNumbers.txt
sed está fazendo uma pesquisa e substituição.O 's' significa pesquisa, o próximo caractere ('/') é o separador, a expressão de busca é '^.......', e a expressão de substituição é uma cadeia de caracteres vazia (i.e.tudo entre os dois últimos barras).
A pesquisa é uma expressão regular.O '^' significa match início da linha.Cada um '.' significa corresponde a qualquer caractere.Assim, a expressão de busca corresponde a 7 primeiros caracteres de cada linha.Este é, então, substituído por uma seqüência de caracteres vazia.Então, o que a sed está a fazer é remover os 7 primeiros caracteres de cada linha.
Uma maneira mais simples para alcançar o mesmo acha que poderia ser:
cut -b8- withLineNumbers.txt > withoutLineNumbers.txt