Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串中的唯一电子邮件_String_Bash_Unique - Fatal编程技术网

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