Estou tendo dificuldade em encontrar soluções on-line para classificar um caminho de diretório absoluto usando letras e números.
Exemplo é o abaixo em um arquivo chamado test.txt
/opt/informix/data/dcdwhdev/rootdbs.2
/opt/informix/data/dcdwhdev/db1.1
/opt/informix/data/dcdwhdev/db1.10
/opt/informix/data/dcdwhdev/db1.11
/opt/informix/data/dcdwhdev/rootdbs.1
/opt/informix/data/dcdwhdev/db1.12
/opt/informix/data/dcdwhdev/db1.19
/opt/informix/data/dcdwhdev/db1.2
/opt/informix/data/dcdwhdev/db1.21
/opt/informix/data/dcdwhdev/db1.22
/opt/informix/data/dcdwhdev/db1.23
/opt/informix/data/dcdwhdev/db1.3
/opt/informix/data/dcdwhdev/db1.31
/opt/informix/data/dcdwhdev/db1.32
/opt/informix/data/dcdwhdev/db1.33
Abaixo está o que eu quero alcançar:
/opt/informix/data/dcdwhdev/db1.1
/opt/informix/data/dcdwhdev/db1.2
/opt/informix/data/dcdwhdev/db1.3
/opt/informix/data/dcdwhdev/db1.10
/opt/informix/data/dcdwhdev/db1.11
/opt/informix/data/dcdwhdev/db1.12
/opt/informix/data/dcdwhdev/db1.19
/opt/informix/data/dcdwhdev/db1.21
/opt/informix/data/dcdwhdev/db1.22
/opt/informix/data/dcdwhdev/db1.23
/opt/informix/data/dcdwhdev/db1.31
/opt/informix/data/dcdwhdev/db1.32
/opt/informix/data/dcdwhdev/db1.33
/opt/informix/data/dcdwhdev/rootdbs.1
/opt/informix/data/dcdwhdev/rootdbs.2
Se você tiver GNU
sort
(pode ser chamadogsort
em seu sistema, ou localizado em um/opt/gnu/bin
diretório, ou no RPM coreutils em IBM.com ):Se
zsh
estiver disponível ( pacote RPM em IBM.com ):Ou listando os arquivos nesse diretório diretamente:
Se não, você pode usar,
perl
por exemplo, como:Onde ordenamos a lista comparando as linhas depois que todas as sequências de dígitos decimais foram preenchidas com zeros para 6 dígitos.
Se as linhas no arquivo sempre tiverem esse formato e você precisar apenas comparar a parte antes da primeira e apenas
.
lexicalmente, e a parte depois dela numericamente, basta fazer:Meu processo é dividir o nome em 2 e depois classificar e reunir novamente