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

标签 unix sorting character newline user-defined

我有一个纯文本文件,其中换行符不是 "\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/

相关文章:

fortran - 延迟长度字符作为实际参数

regex - 如何从perl中的字符串中删除最后n个数字字符

string - 在R中将多个字符串连接成一个字符串

c - 在 Unix-ish 环境中,PID 环绕是否保证改变进程开始时间?

Apachectl "service already loaded"当它不是

macos - 如何从Mac/Unix上的文件夹中递归删除文件

python - numpy 中的数组按行排序

javascript - jqgrid如何设置排序规则?

java - 使用 java.text.Collat​​or 并发排序时如何避免线程阻塞?

linux - 通过 SSH 服务器获取 SCP 到本地的权限被拒绝