como filtrar um arquivo para obter linhas que consistem inteiramente em pares de dígitos repetidos?

como filtrar um arquivo para obter linhas que consistem inteiramente em pares de dígitos repetidos?

Eu tenho um arquivo que contém números começando em

00000000
00000001
00000002
.
.
.
99999999

Quero filtrá-lo no bash para que a saída seja assim:

00000000
00000011
00000022
.
.
11223344
11223355
.
.
99999977
99999988
99999999

Responder1

Parece que você realmente querfiltroo arquivo em vez de classificá-lo - em particular, para gerar apenas as linhas que consistem inteiramente em pares de caracteres repetidos ou (mais especificamente) dígitos. Então, por exemplo grep, usando algo como

grep -Ex '((.)\2)+' yourfile

ou usando o modo PCRE para evitar a captura do grupo externo

grep -Px '(?:(\d)\1)+' yourfile

Responder2

Supondo que todos os seus números tenham oito dígitos e estejam em um arquivo chamado nums.txt, você pode usar a função de string awk de substr para filtrar todas as linhas cujos dois últimos caracteres são iguais:

awk '{ if(substr($1, 7, 1)==substr($1, 8, 1)) print $1}' nums.txt

Você então obtém:

    00000000
    00000011
    00000022
    00000055

....

informação relacionada