注意:补充问题在这里:如何在以标题分隔的多个“块”中分别对行进行排序?
因此,我确实找到了答案,那就是如何按字母顺序对文本文件中的行进行排序。但是,这不完全是我需要做的。我有一个配置文件,该配置文件包含15个不同的参数,这些参数进入工作中的仪器并由机器读取以具有配置文件列表。
可悲的是,此文件的格式如下所示:
[ProfileB]
param1=z
param2=y
param3=x
[ProfileA]
param1=k
param2=l
param3=
我想按字母顺序对概要文件进行排序,但我需要它们与它们的参数保持分组。上面的示例应按以下方式排序:
[ProfileA]
param1=k
param2=l
param3=
[ProfileB]
param1=z
param2=y
param3=x
我猜想有些事情可以用固定数量的行(名称+参数)或以字符[[]作为一组行的开头的标识符来工作。
但这超出了我在文本处理方面的能力。我可以使用Sublime Text,R或Linux命令控制台。
这在我的Debian中有效:
sed '1 ! s/^\[/\x00\[/g' | sort -z | tr -d "\0"
要使用文件,请使用重定向,例如{ sed … ; } <input.txt >output.txt
,sed …
整个命令在哪里。
步骤如下:
sed
[
除非行是第一行,否则在行开头的每个行之前插入一个空字符。这样,空字符可分隔配置文件。sort -z
使用这些空字符作为分隔符,因此它对整个配置文件进行排序,而不是对单独的行进行排序。tr
删除空字符。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句