如何在一行中找到唯一的单词

Gir*_*shi 4 shell-script text-processing

我有一个字符串,它是50003 50003 50003 50001在处理到另一个文件中后得到的,该文件存储到一个变量中。现在我想从那个可变的独特词中。比如50003 50001怎么做?

cla*_*123 8

您可以通过 tr、sort、uniq 对其进行管道传输,例如在命令提示符下您可以对此进行测试:

 $ var1='50003 50003 50003 50001 50003'
Run Code Online (Sandbox Code Playgroud)

下一个,

 $ echo $var1 | tr ' ' '\n' | sort | uniq
50001
50003
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它输出唯一的,并对其进行排序,以防你以后想用它做一些需要排序输入的事情。

更新

对于评论中的其他问题,如果您希望将结果保存到变量中,您可以在脚本中:

var2="$( echo $var1 | tr ' ' '\n' | sort | uniq )"
Run Code Online (Sandbox Code Playgroud)
  • $(...)是一个 bash 命令替换,用$(...)命令的输出替换的内容

所以稍后在你的脚本中,如果你想输出$var2到终端,只需:

echo "$var2"
Run Code Online (Sandbox Code Playgroud)
  • $var2用引号括起来,以便继续将其显示为每个结果一行
  • 否则,如果没有引号,echo默认情况下将每个“单词”解释$var2为一个单独的参数,将其一一输出,以空格分隔,因此您最终会得到一个长句子。

还请记住,您可以将输出保存到一个文件中,例如~/unique_results.txt

echo $var1 | tr ' ' '\n' | sort | uniq  > ~/unique_results.txt
Run Code Online (Sandbox Code Playgroud)
  • > 是文件重定向,将标准输出重定向到指定文件