Comando total: egrep -n "^.{$(wc -L < filename)}$" filename
Repartição:
egrep
= O programa egrep
, que procura por linhas que correspondam a um padrão e as imprima. (semelhante a grep
). Equivalente a grep -E
, que interpreta a coisa entre aspas como um padrão de expressão regular estendido.
-n
= egrep para indicar o número da linha.
$(wc -L < filename)
- wc
é um programa contador de palavras e imprime o número de novas linhas e coisas no arquivo. -L
é o argumento wc
max length. < filename
é o comando para passar todo o conteúdo do arquivo filename
especificado para wc
. $( )
é um Bashism (algo que está relacionado ao programa bash
e linguagem de script) e é uma maneira de dizer "Processe o comando aqui, então coloque a saída no lugar dessa string inteira. O restante desse comando parece ser parte de expressões regulares, mais a entrada passada na string, em última análise, com este apenas sendo o padrão em que egrep
corresponde.
"^.{
... }$"
= O "
é apenas uma maneira de passar esse padrão para egrep
sem caracteres sendo interceptados como códigos Bash. O restante é um padrão de expressão regular . Regex é algo que todos deveriam saber. Eu uso RegExr para me ajudar a aprender e entender o regex e para criar padrões de regex. Para quebrar isso, ^
é uma âncora e indica que ela corresponde ao início da string. .
indica qualquer caractere, exceto uma quebra de linha antes do próximo argumento. {
e }
indicam% real{
e }
caracteres na saída, de acordo com RegExr. O $
no final é uma âncora para indicar o final da string.