我有一个纯文本文件,其中换行符不是 "\n"
而是一个特殊的角色。
现在我想对这个文件进行排序。
使用 unix sort
时是否有直接指定自定义换行符的方法?命令?
我不想为此尽可能使用脚本?
请注意文本文件中的数据有\n
, \r\n
, 和 \t
字符(此类数据的原因是特定于应用程序的,因此请不要对此发表评论)。
样本数据如下:
1111\n1111<Ctrl+A>
2222\t2222<Ctrl+A>
3333333<Ctrl+A>
这里
Ctrl+A
是换行符。
最佳答案
使用 perl -001e 'print sort <>'
去做这个:
prompt$ cat -tv /tmp/a
2222^I2222^A3333333^A1111
1111^A
prompt$ perl -001e 'print sort <>' /tmp/a | cat -tv
1111
1111^A2222^I2222^A3333333^Aprompt$
这是有效的,因为字符 001(八进制 1)是 control-A(
"\cA"
),它是您在此数据集中的记录终止符。您还可以使用
-0xHHHHH
以十六进制形式使用代码点.请注意,使用此快捷方式,它必须是单个代码点,而不是字符串。有一些方法可以为字符串甚至涉及无穷多代码的正则表达式执行此操作。
关于带有用户定义换行符的 Unix 排序文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778368/