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.