2013-07-30 42 views
0

我有随机使用这些字符串的文件。我怎样才能水平排序,并消除任何重复。如何通过shell脚本对文件中的随机字符串进行排序

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 

回答

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 ... 
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 
相关问题