【问题标题】: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 &lt;&gt;' 执行此操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-10
      • 2021-09-28
      • 2013-06-20
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多