String 字符串中的唯一电子邮件
我有一个电子邮件字符串,有些是重复的。仅举个例子:String 字符串中的唯一电子邮件,string,bash,unique,String,Bash,Unique,我有一个电子邮件字符串,有些是重复的。仅举个例子: "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com" 我想字符串只包含唯一的电子邮件,逗号分隔。结果应该是: "aaa@company.com,bbb@company.com,ccc@company.com" 有什么简单的方法吗 另外,电子邮件各不相同,我不知道它们会包含什么内容。这个怎么样: echo "aaa@company.c
"aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com"
我想字符串只包含唯一的电子邮件,逗号分隔。结果应该是:
"aaa@company.com,bbb@company.com,ccc@company.com"
有什么简单的方法吗
另外,电子邮件各不相同,我不知道它们会包含什么内容。这个怎么样:
echo "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com" |
tr ',' '\n' |
sort |
uniq |
tr '\n' ',' |
sed -e 's/,$//'
我将分隔的逗号转换为换行符,这样我就可以使用诸如sort、uniq和grep之类的工具来处理行了。这样如何:
echo "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com" |
tr ',' '\n' |
sort |
uniq |
tr '\n' ',' |
sed -e 's/,$//'
我将分隔的逗号转换成换行符,这样我就可以使用诸如sort、uniq和grep之类的工具来处理行。使用awk和only,而不是使用sort和其他工具
awk -vORS="," '!seen[$1]++' < <(echo "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com" | tr ',' '\n')
aaa@company.com,bbb@company.com,ccc@company.com
使用awk和仅限于使用排序和其他工具
awk -vORS="," '!seen[$1]++' < <(echo "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com" | tr ',' '\n')
aaa@company.com,bbb@company.com,ccc@company.com
使用perl
使用perl
获取数组中的字符串:
IFS=','; read -r -a lst <<< "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com"
排序和筛选:
IFS=$'\n' sort <<< "${lst[*]}" | uniq
获取数组中的字符串:
IFS=','; read -r -a lst <<< "aaa@company.com,bbb@company.com,aaa@company.com,bbb@company.com,ccc@company.com"
排序和筛选:
IFS=$'\n' sort <<< "${lst[*]}" | uniq