bash sort a partir do final da string


0

Eu quero classificar o arquivo pelo primeiro arquivo, mas o último caractere é o mais importante.

Por exemplo, arquivo de formulário:

"AAAACTTTTT"                    1       2

"AAAACAAAAA"    1       2       6       4

Para:

"AAAACAAAAA"    1       2       6       4

"AAAACTTTTT"                    1       2

Eu tentei:

sort -k1,1 file

Claro que não funciona, mas não tenho ideia de como posso fazer isso. Você poderia me ajudar? Mayby algumas bandeiras secretas?


Podes tentar rev que inverte a linha (o delimitador é "\ n"). Então você pode fazer assim cat file|rev|sort -k1,1 |rev
makgun

Mas agora eu não sei quantos são arquivados e não posso escolher campo.
diego9403

Desculpe por favor mais informações (eu aprendi Inglês, mas não bem) Então eu não entendo o que você não poderia fazer
makgun

Meu inglês é muito ruim e isso pode ser um problema. Eu quero classificar arquivo conter, esse tipo de linhas como eu escrevi e campo para classificar é 1 - "AAACTTT" e eu quero classificar isso como "TTTCAAA".
diego9403

Você quer implementar isso para cada campo?
makgun

Respostas:


0

Se o arquivo não for muito grande, você pode fazer isso com o GNU awk:

{
    count = split($1, arr, "");
    key = ""
    for (i = 1; i <= count; i++) {
        key = arr[i] key;
    }
    lines[key] = $0;
}
END {
    count = asort(lines);
    for (i = 1; i <= count; i++) {
        print lines[i];
    }
}

0

Eu queria classificar (agrupar) uma lista de endereços de e-mail por seus nomes de domínio, por exemplo, all '@ xxx.com' então todo o '@ yyy.com' (solução baseada em um comentário de makgun)

rev emailist | sort | rev > emailistsorted

para obter apenas uniques

rev emailist | sort -u | rev > emailistsorted
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.