有许多工具可以在假设感兴趣的单位是行的情况下对文本文件进行排序,但是有没有可以对块进行排序的工具呢?
例子:
name = Mercury
order = 1
mass = 0.06
name = Venus
order = 2
mass = 0.82
name = Earth
order = 3
mass = 1
是否有一种工具可以按名称、质量或距离太阳的顺序对行星列表进行排序,将其作为输入并生成一个文本文件作为输出,其中每个记录都是像上面的一个块?
答案1
对于适合内存的文件,您可以使用 Perl,您可以定义输入记录分隔符。
perl -e '$/="\n\n"; print sort <>' t.txt
如果文件对于内存来说太大,但是您有相同数量的可用磁盘空间,则可以进行三步排序:
- 使用 perl 合并每条记录的行
- 种类
- 使用 perl 分割每条记录的行
为了按某个属性的值进行排序,我会将数据读入合适的数据结构,例如哈希数组奥赫并定义一个比较器,如中所述perldoc -f sort
或者我会
- 使用 perl 仅将值转换为 CSV
- 种类
- 使用 perl 将 CSV 转换回具有名称=值对的多行记录
用 Perl 完成整个工作可能是最好的选择。
还有其他编程语言可用。