【问题标题】:Unix sort text file with user-defined newline character具有用户定义的换行符的 Unix 排序文本文件
【发布时间】:2012-08-02 13:24:16
【问题描述】:
我有一个纯文本文件,其中换行符不是"\n",而是一个特殊字符。
现在我想对这个文件进行排序。
在使用 unix sort 命令时是否有直接的方法来指定自定义换行符?
我不想为此尽可能使用脚本?
请注意文本文件中的数据有\n、\r\n和\t字符(这些数据的原因是应用程序特定的,所以请不要评论)。
样本数据如下:
1111\n1111<Ctrl+A>
2222\t2222<Ctrl+A>
3333333<Ctrl+A>
这里Ctrl+A 是换行符。
【问题讨论】:
标签:
unix
sorting
character
newline
user-defined
【解决方案1】:
使用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 以十六进制形式使用代码点。请注意,使用此快捷方式时,它必须是单个代码点,而不是字符串。有一些方法可以处理字符串,甚至涉及无限多代码的正则表达式。