Unix排序文本文件,带有用户定义的换行符

时间:2012-08-02 13:24:16

标签: unix sorting character newline user-defined

我有一个纯文本文件,其中换行符不是"\n",而是一个特殊字符。

现在我要对此文件进行排序。

使用unix sort命令时是否有直接指定自定义换行符的方法? 我不想尽可能使用脚本吗?

请注意,文本文件中的数据包含\n\r\n\t个字符(此类数据的原因是针对特定应用的,因此请不要对此进行评论。)< / p>

样本数据如下:

1111\n1111<Ctrl+A>
2222\t2222<Ctrl+A>
3333333<Ctrl+A>

此处Ctrl+A是换行符。

1 个答案:

答案 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以十六进制格式使用代码点。请注意,使用此快捷方式,它必须是单个代码点,而不是字符串。有很多方法可以用于字符串,甚至是涉及无限多代码的正则表达式。