我想向表示逗号分隔列表的字符串变量添加一个新项目,同时防止项目出现两次。
我想到了这个 python 解决方案:
python -c "import sys ; first = set(sys.argv[1].split(',')) ; all = first.union(set(sys.argv[2:])) ; print ','.join(all)" 1,2 4 3 2
1,3,2,4
多行:
import sys
first = set(sys.argv[1].split(','))
all = first.union(set(sys.argv[2:]))
print ','.join(all)
虽然该解决方案有效,但它不太适合 shell 脚本中的单行代码。
我已经使用 awk
、sed
或普通的 bash
尝试了一些事情,但没有任何结果导致一个简短但仍然稳定的解决方案。有没有人知道如何用简短的命令行惯用语来表达这一点?
最佳答案
awk
助您一臂之力!
$ echo -n "1,2 4 3 2" | awk -v RS='[, ]' '!a[$0]++' | paste -sd,
1,2,4,3
关于bash - 用一行将项目添加到逗号分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38249072/