No caso, se cada item <tr>
estiver em uma linha separada:
awk
+ sort
:
awk -F'[<>]' '{ print $(NF-4), $0 }' file.txt | sort -k1,1n -k1.5M | cut -d' ' -f2-
-
-F'[<>]'
- trata<
e>
como separador de campos -
$(NF-4)
- contém o último valor da tag<td>
(por exemplo,2017Jan31
) de cada linha. Isso é usado como uma chave de classificação. -
-k1,1n
- classifica pelo primeiro campo numericamente (ou seja, por ano de data) -
-k1.5M
- data de classificação de mês a partir do quinto caractere -
cut -d' ' -f2-
- remove uma chave de classificação auxiliar (o primeiro campo)
A saída:
<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>