bash - 用一行将项目添加到逗号分隔列表

标签 bash shell csv awk sed

我想向表示逗号分隔列表的字符串变量添加一个新项目,同时防止项目出现两次。

我想到了这个 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 脚本中的单行代码。

我已经使用 awksed 或普通的 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/

相关文章:

linux - sudo使用什么shell

linux - BASH脚本在需要按键返回提示时调用新脚本

shell - 从 netstat 输出中提取 IP

php - 如何安装/启用 PHP phar 扩展?

csv - 如何在 Mule 中读取巨大的 CSV 文件

java - Firefox 不会将此文件下载为 CSV

python - PyCharm Python 输出对于大型数据集会崩溃

python - 查找所有具有正方形尺寸的图像 (1 :1 ratio)

linux - bat to sh 翻译请

bash - 如何grep,排除一些模式?