Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何通过shell脚本对文件中的随机字符串进行排序_Bash_Shell_Unix_Awk_Cut - Fatal编程技术网

Bash 如何通过shell脚本对文件中的随机字符串进行排序

Bash 如何通过shell脚本对文件中的随机字符串进行排序,bash,shell,unix,awk,cut,Bash,Shell,Unix,Awk,Cut,我有一个随机带有这些字符串的文件。如何对它们进行水平排序并消除任何重复项 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

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

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
所需输出:

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

整个想法是
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

整个想法是
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

这将实现以下目的:

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

  • sort-u
    排序并删除重复项

  • 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
    
  • tr'\n'
    将输出展平为单行

或者使用
xargs

$ xargs -n1 < file | sort -u | xargs
ticket-125788 ticket-125948 ticket-126824 ticket-126914 ticket-126957 ...
$xargs-n1
这将实现以下目的:

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

  • sort-u
    排序并删除重复项

  • 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
    
  • tr'\n'
    将输出展平为单行

或者使用
xargs

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