我随机拥有一个包含这些字符串的文件。如何水平排序并消除任何重复。
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
答案 0 :(得分:2)
整个想法是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
答案 1 :(得分: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 ...