Organizar registos em ficheiro txt

1. Organizar registos em ficheiro txt

Ede
ede_linux

(usa Ubuntu)

Enviado em 14/10/2017 - 11:26h

Olá,

Pretendo juntar e ordenar a seguinte lista de maneira a que o resultado seja assim:

4324254 /path/home/qwert.pdf
3243255 /jsdf/sfddf/poiuy.pdf
3432423 /path/ldksdfsdf/qwert.pdf
3545454 /path/85sdf/poiuy.pdf


Resultado:

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf


O algoritmo que estou a pensar será o seguinte:
1-Identificar todas as linhas onde no final tenho o mesmo nome no meio do último / e .pdf;
2-Junta essas linha em blocos;

Estou um pouco confuso sobre quais programas devo utilizar. Estou a pensar utilizar o uniq. Penso que o grep vou ter que utilizar, pois preciso de identificar um padrão.
Talvez a ordem seja:
1-grep para identificar o padrão - (tenho que fazer uso das expressões regulares);
2-sort para organizar os registos e facilitar a vida ao uniq;
3-aplicar o uniq para separar os repetidos por blocos;

Obrigado



  


2. Re: Organizar registos em ficheiro txt

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 14/10/2017 - 11:53h

Ordenação de acordo com final das linhas:
sort -t/ -k4 arquivo 

ou
rev arquivo | sort | rev 



3. Re: Organizar registos em ficheiro txt

Ede
ede_linux

(usa Ubuntu)

Enviado em 14/10/2017 - 12:01h

Ryuk escreveu:

Ordenação de acordo com final das linhas:
sort -t/ -k4 arquivo 

ou
rev arquivo | sort | rev 


O parametro -t/ é para identificar o -field-separator. Neste caso é a barra /
-k é a --key=keydef. O que o valor 4 faz?

O rev não conhecia. Mas o que ele faz é inverter a ordem dos caracteres de cada linha, certo?

Obrigado


4. Re: Organizar registos em ficheiro txt

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 14/10/2017 - 13:21h

-t/ = separa colunas por /
-k4 = quarta coluna
rev = inverte a ordem dos caracteres


5. Re: Organizar registos em ficheiro txt

Ede
ede_linux

(usa Ubuntu)

Enviado em 14/10/2017 - 13:55h

E se tiver situações com 5 ou 6 colunas misturadas com 4 colunas! Como faço?




6. Re: Organizar registos em ficheiro txt

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 14/10/2017 - 14:03h

ede_linux escreveu:

E se tiver situações com 5 ou 6 colunas misturadas com 4 colunas! Como faço?



Neste caso, melhor usar o "rev" mesmo.


7. Re: Organizar registos em ficheiro txt

Ede
ede_linux

(usa Ubuntu)

Enviado em 14/10/2017 - 14:07h

Assim faço mirro da string e organizo pela primeira coluna, certo?


8. Re: Organizar registos em ficheiro txt

Ede
ede_linux

(usa Ubuntu)

Enviado em 14/10/2017 - 14:21h

Resulta!

Fica tudo junto. Como faço para que seja adicionada uma linha vazia entre blocos de registos iguais?
Estive a ver se o uniq tem o parametro -k, mas não tem!


9. Re: Organizar registos em ficheiro txt

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/10/2017 - 15:52h

ede_linux escreveu:

Olá,

Pretendo juntar e ordenar a seguinte lista de maneira a que o resultado seja assim:

4324254 /path/home/qwert.pdf
3243255 /jsdf/sfddf/poiuy.pdf
3432423 /path/ldksdfsdf/qwert.pdf
3545454 /path/85sdf/poiuy.pdf


Resultado:

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf


O algoritmo que estou a pensar será o seguinte:
1-Identificar todas as linhas onde no final tenho o mesmo nome no meio do último / e .pdf;
2-Junta essas linha em blocos;

Estou um pouco confuso sobre quais programas devo utilizar. Estou a pensar utilizar o uniq. Penso que o grep vou ter que utilizar, pois preciso de identificar um padrão.
Talvez a ordem seja:
1-grep para identificar o padrão - (tenho que fazer uso das expressões regulares);
2-sort para organizar os registos e facilitar a vida ao uniq;
3-aplicar o uniq para separar os repetidos por blocos;

Obrigado


Boa tarde Ede.
Segue sugestão:
for ARQ in $(awk -F '[ \/]' '{print $NF}' ARQUIVOS.txt |sort -r|uniq);do
grep "$ARQ$" ARQUIVOS.txt
echo -e ""
done

4324254 /path/home/qwert.pdf
3432423 /path/ldksdfsdf/qwert.pdf

3243255 /jsdf/sfddf/poiuy.pdf
3545454 /path/85sdf/poiuy.pdf

Att.:
Marcelo Oliver



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts