gpt4 book ai didi

linux - 如何显示 Bash 字符串中包含的唯一单词?

转载 作者:IT王子 更新时间:2023-10-29 00:25:23 26 4
gpt4 key购买 nike

我有一个包含重复单词的字符串。我只想显示唯一的单词。字符串是:

variable="alpha bravo charlie alpha delta echo charlie"

我知道可以一起执行此操作的几种工具。这是我想出来的:

echo $variable | tr " " "\n" | sort -u | tr "\n" " "

什么是更有效的方法?

最佳答案

使用 Bash 替换扩展

以下shell parameter expansion将用换行符替换空格,然后将结果传递给sort 实用程序以仅返回唯一的单词。

$ echo -e "${variable// /\\n}" | sort -u
alpha
bravo
charlie
delta
echo

这对单词排序有副作用,因为 sortuniq 实用程序都需要对输入进行排序以检测重复项。如果那不是你想要的,我还发布了一个 Ruby solution保留原始词序。

重新加入单词

如果正如一位评论者指出的那样,您正在尝试将独特的单词重新组合成一行,您可以使用 command substitution去做这个。例如:

$ echo $(echo -e "${variable// /\\n}" | sort -u)
alpha bravo charlie delta echo

命令替换周围缺少引号是有意的。如果你引用它,换行符将被保留,因为 Bash 不会做 word-splitting .不加引号,shell 会将结果作为单行返回,无论这看起来多么不直观。

关于linux - 如何显示 Bash 字符串中包含的唯一单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com