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すべての «string» にあり、それを経由して 1 行に折りたたむこと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 に答える