Eu quero classificar o conteúdo file.txt
por data. <td></td>
A data para classificar está na quarta tag de dados da tabela
Ex: Conteúdo de file.txt
:
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Mar01</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Jan31</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Apr02</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Dec25</td></tr>
Saída desejada: Como posso fazer isso?
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Jan31</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Dec25</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Mar01</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Apr02</td></tr>
Eu tenho usado sort
o comando, mas não está funcionando.
cat file.txt 2> /dev/null | sort -t'>' -k9n -k9.4M -k9.7n
EDIT: Encontrei este link de referência, mas ainda não funciona corretamente. https://stackoverflow.com/a/16060031/7842707
Caso cada
<tr>
item esteja em uma linha separada:awk
+sort
solução:-F'[<>]'
- tratar<
e>
como separador de campo$(NF-4)
- contém o último<td>
valor de tag (por exemplo2017Jan31
, ) de cada linha. Isso é usado como uma chave de classificação.-k1,1n
- classificar pelo 1º campo numericamente (ou seja, por data e ano)-k1.5M
- ordenação do mês da data a partir do 5º caractercut -d' ' -f2-
- remover uma chave de classificação auxiliar (o 1º campo)A saída: