我有一个纯文本文件,其中换行符不是"\n"
,而是一个特殊字符。
现在我要对此文件进行排序。
使用unix sort
命令时是否有直接指定自定义换行符的方法?
我不想尽可能使用脚本吗?
请注意,文本文件中的数据包含\n
,\r\n
和\t
个字符(此类数据的原因是针对特定应用的,因此请不要对此进行评论。)< / p>
样本数据如下:
1111\n1111<Ctrl+A>
2222\t2222<Ctrl+A>
3333333<Ctrl+A>
此处Ctrl+A
是换行符。
答案 0 :(得分:3)
使用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
以十六进制格式使用代码点。请注意,使用此快捷方式,它必须是单个代码点,而不是字符串。有很多方法可以用于字符串,甚至是涉及无限多代码的正则表达式。