Mam taki ciąg
"aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc"
Chcę usunąć zduplikowane słowo z ciągu, a następnie wynik będzie podobny
"aaa,bbb,ccc"
Próbowałem tego kodu źródłowego
$ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
Działa dobrze z tą samą wartością, ale kiedy podam moją wartość zmiennej, pokazuje także wszystkie zduplikowane słowa.
Jak mogę usunąć zduplikowaną wartość.
AKTUALIZACJA
Moje pytanie polega na dodaniu całej odpowiadającej wartości do jednego ciągu, jeśli użytkownik jest taki sam. Mam takie dane ->
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
W kodowaniu pobieram wszystkich różnych użytkowników, a następnie z powodzeniem łączę ciąg kolorów. Dla tego, że używam kodu -
while read the records
if [ "$c" == "" ]; then #$c I defined global
c="$colour1"
else
c="$c,$colour1"
fi
Kiedy drukuję tę zmienną $ c, otrzymuję wynik (dla użytkownika AAA)
"red,black,blue,red,green,red,black,blue,red,green,"
Chcę usunąć zduplikowany kolor. Następnie pożądane wyjście powinno być jak
"red,black,blue,green"
Do tego pożądanego wyjścia użyłem powyższego kodu
echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
ale wyświetla dane wyjściowe ze zduplikowanymi wartościami
„czerwony, czarny, niebieski, czerwony, zielony, czerwony, czarny, niebieski, czerwony, zielony”, Dzięki
echo 'aaa aaa aaa bbb bbb ccc bbb ccc' | xargs -n1 | sort -u | xargs
daje aaa bbb ccc
.. więc musisz pokazać dokładny kod, który zmęczyłeś i s='aaa aaa aaa bbb bbb ccc bbb ccc'; echo "$s" | xargs -n1 | sort -u | xargs