【问题标题】:How to sort random strings in a file via shell script如何通过shell脚本对文件中的随机字符串进行排序
【发布时间】:2013-07-30 17:45:55
【问题描述】:

我有一个随机包含这些字符串的文件。我怎样才能对它们进行水平排序并消除任何重复。

cat file
ticket-125788   ticket-126824    ticket-126957   ticket-126914
ticket-127220
ticket-125948                       ticket-126914

ticket-127030
ticket-127262
 ticket-127012  ticket-127022
ticket-127035


     ticket-126961
ticket-127024

Desired output:

ticket-125788 ticket-126824 ticket-126957 ticket-127220 ticket-125948 ticket-126914 ticket-127030 ticket-127262 ticket-127012 ticket-127022 ticket-127035 ticket-126961 ticket-127024

【问题讨论】:

    标签: bash shell unix awk cut


    【解决方案1】:

    整个想法是grep每个«string»,然后通过tr将其折叠成单行。

    $> grep -P -o "[0-9a-z-]+" file | sort --unique | tr '\n' ' '
    ticket-125788 ticket-125948 ticket-126824 ticket-126914 ticket-126957 ticket-126961 ticket-127012 ticket-127022 ticket-127024 ticket-127030 ticket-127035 ticket-127220 ticket-127262
    

    【讨论】:

      【解决方案2】:

      这样就可以了:

      $ grep -o '\S*' file | sort -u | tr '\n' ' '
      ticket-125788 ticket-125948 ticket-126824 ticket-126914 ticket-126957 ...
      
      • grep -o 将每张票放在单独的一行。

      • sort -u 对重复项进行排序和删除。

      • tr '\n' ' ' 将输出展平为单行。

      或者使用xargs:

      $ xargs -n1 < file | sort -u | xargs
      ticket-125788 ticket-125948 ticket-126824 ticket-126914 ticket-126957 ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 1970-01-01
        • 2020-12-27
        • 2017-11-12
        • 2019-02-03
        相关资源
        最近更新 更多