ฉันมีสตริงเหมือน
"aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc"
ฉันต้องการลบคำที่ซ้ำกันออกจากสตริงจากนั้นผลลัพธ์จะเป็นเช่นนั้น
"aaa,bbb,ccc"
ฉันลองรหัสนี้แหล่งที่มา
$ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
มันทำงานได้ดีกับค่าเดียวกัน แต่เมื่อฉันให้ค่าตัวแปรแล้วมันจะแสดงคำที่ซ้ำกันทั้งหมดด้วย
ฉันจะลบค่าที่ซ้ำกันได้อย่างไร
UPDATE
คำถามของฉันคือการเพิ่มค่าที่สอดคล้องกันทั้งหมดลงในสตริงเดียวถ้าผู้ใช้เหมือนกันฉันมีข้อมูลเช่นนี้ ->
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
ในการเขียนโปรแกรมฉันดึงผู้ใช้ที่แตกต่างกันทั้งหมดจากนั้นฉันเชื่อมสตริงสีให้เรียบร้อยเพื่อที่ฉันใช้รหัส -
while read the records
if [ "$c" == "" ]; then #$c I defined global
c="$colour1"
else
c="$c,$colour1"
fi
เมื่อฉันพิมพ์ตัวแปร $ c นี้ฉันจะได้รับผลลัพธ์ (สำหรับผู้ใช้ AAA)
"red,black,blue,red,green,red,black,blue,red,green,"
ฉันต้องการลบสีที่ซ้ำกันผลลัพธ์ที่ต้องการควรเป็นเช่นนั้น
"red,black,blue,green"
สำหรับผลลัพธ์ที่ต้องการนี้ฉันใช้รหัสข้างต้น
echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
แต่มันจะแสดงผลลัพธ์ที่มีค่าซ้ำกันเช่น
"แดง, ดำ, น้ำเงิน, แดง, เขียว, แดง, ดำ, น้ำเงิน, แดง, เขียว," ขอบคุณ
echo 'aaa aaa aaa bbb bbb ccc bbb ccc' | xargs -n1 | sort -u | xargs
ให้aaa bbb ccc
.. ดังนั้นคุณจะต้องแสดงรหัสที่แน่นอนที่คุณเหนื่อยและเอาท์พุทที่คุณได้ .. กับสตริงในตัวแปร:s='aaa aaa aaa bbb bbb ccc bbb ccc'; echo "$s" | xargs -n1 | sort -u | xargs