Urv*_*shi 15 shell duplicate xargs shell-script text-processing
我有一个像
"aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc"
Run Code Online (Sandbox Code Playgroud)
我想从字符串中删除重复的单词然后输出就像
"aaa,bbb,ccc"
Run Code Online (Sandbox Code Playgroud)
我试过这个代码源
$ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
Run Code Online (Sandbox Code Playgroud)
它在相同的值下工作正常,但是当我给我的变量值时,它也会显示所有重复的单词。
如何删除重复值。
更新
如果用户相同,我的问题是将所有相应的值添加到一个字符串中。我有这样的数据 - >
user name | colour
AAA | red
AAA | black
BBB | red
BBB | blue
AAA | blue
AAA | red
CCC | red
CCC | red
AAA | green
AAA | red
AAA | black
BBB | red
BBB | blue
AAA | blue
AAA | red
CCC | red
CCC | red
AAA | green
Run Code Online (Sandbox Code Playgroud)
在编码中,我获取了所有不同的用户,然后我成功地连接了颜色字符串。为此,我使用了代码 -
while read the records
if [ "$c" == "" ]; then #$c I defined global
c="$colour1"
else
c="$c,$colour1"
fi
Run Code Online (Sandbox Code Playgroud)
当我打印这个 $c 变量时,我得到了输出(对于用户 AAA)
"red,black,blue,red,green,red,black,blue,red,green,"
Run Code Online (Sandbox Code Playgroud)
我想删除重复的颜色。然后所需的输出应该是
"red,black,blue,green"
Run Code Online (Sandbox Code Playgroud)
对于这个所需的输出,我使用了上面的代码
echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
Run Code Online (Sandbox Code Playgroud)
但它显示具有重复值的输出。就像
“红色,黑色,蓝色,红色,绿色,红色,黑色,蓝色,红色,绿色,”谢谢
Geo*_*iou 16
再来一个 awk,只是为了好玩:
$ a="aaa bbb aaa bbb ccc aaa ddd bbb ccc"
$ echo "$a" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}'
aaa bbb ccc ddd
Run Code Online (Sandbox Code Playgroud)
顺便说一句,即使您的解决方案也适用于变量:
$ b="zebra ant spider spider ant zebra ant"
$ echo "$b" | xargs -n1 | sort -u | xargs
ant spider zebra
Run Code Online (Sandbox Code Playgroud)
Mic*_* D. 11
与tr,sort和uniq
echo "zebra ant spider spider ant zebra ant" | tr ' ' '\n' | sort -u
Run Code Online (Sandbox Code Playgroud)
或者
echo "zebra ant spider spider ant zebra ant" | tr ' ' '\n' | sort -u | xargs
Run Code Online (Sandbox Code Playgroud)
得到一行
$ echo "zebra ant spider spider ant zebra ant" | awk -v RS="[ \n]+" '!n[$0]++'
zebra
ant
spider
Run Code Online (Sandbox Code Playgroud)