sort -t_ -k2 infile
classificará os dados usando a segunda chave com sublinhado como separador.
O que eu quero alcançar é classificar linhas de texto por um ponto específico no texto (as linhas de texto não têm espaços ou colunas). Eu criei uma solução para isso, mas quero saber se existe uma maneira mais direta e simples de fazer isso.
Meu método atual para isso é causar uma quebra, ou seja, fazer uma nova coluna no mesmo lugar em cada linha (antes do ponto que eu quero classificar - sendo este Sn_L001_Rn) e, em seguida, classificar por essa coluna e, em seguida, as duas colunas juntas. isso funciona, mas parece excessivamente complicado e desajeitado. Eu vi posts em fazer um sistema de pontuação com awk, mas como o meu vai para pelo menos 96, então isso parece demorado. Também vi sqlite pode ser aplicável, mas isso também parece igualmente demorado. Peço desculpas se essa pergunta já foi feita, mas até agora não consegui encontrar um método simples para resolvê-la.
Aqui está uma entrada de exemplo:
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
Saída desejada:
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
Para adicionar mais complexidade, em uma situação em que o é mais do que 1 do mesmo Sn, eu gostaria que ele levasse em conta o nome (embora eu pense que isso pode ser resolvido usando sinalizadores em sort
).
Tags text-processing sort