我想file.txt
按日期对内容进行排序。要排序的日期在第四个表格数据<td></td>
标签中
例如内容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>
期望的输出:我该怎么做?
<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>
我一直在使用sort
命令,但它不起作用。
cat file.txt 2> /dev/null | sort -t'>' -k9n -k9.4M -k9.7n
编辑:我找到了这个参考链接,但仍然无法正常工作。 https://stackoverflow.com/a/16060031/7842707
如果每个
<tr>
项目都在单独的行上:awk
+sort
解决方案:-F'[<>]'
- 将<
和>
作为字段分隔符$(NF-4)
- 包含每行的最后一个<td>
标签值(例如2017Jan31
)。这用作排序键。-k1,1n
- 按数字排序第一个字段(即按日期年份)-k1.5M
- 从第 5 个字符开始的日期月份排序cut -d' ' -f2-
- 删除一个辅助排序键(第一个字段)输出: