0

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

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
4

2 回答 2

2

整个想法是grep每个«字符串»,然后通过 . 将其折叠为单行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
于 2013-07-30T17:49:17.330 回答
1

这可以解决问题:

$ 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 ...
于 2013-07-30T17:52:12.347 回答