ในลินุกซ์ผมสามารถ grep grep mySearchString myFile.txtสตริงจากไฟล์โดยใช้ ฉันจะได้รับเฉพาะผลลัพท์ที่ไม่ซ้ำได้อย่างไร
ในลินุกซ์ผมสามารถ grep grep mySearchString myFile.txtสตริงจากไฟล์โดยใช้ ฉันจะได้รับเฉพาะผลลัพท์ที่ไม่ซ้ำได้อย่างไร
คำตอบ:
คุณสามารถทำสิ่งนี้ได้ด้วยsortและuniqยูทิลิตี้
ตัวอย่าง:
[john @ awesome ~] $ echo -e "ทดสอบ \ ntest \ ntest \ nantest ทดสอบ \ ntest" ทดสอบ ทดสอบ ทดสอบ การทดสอบอื่น ทดสอบ [john @ awesome ~] $ echo -e "ทดสอบ \ ntest \ ntest \ nantest ทดสอบ \ ntest" | จัดเรียง | UNIQ การทดสอบอื่น ทดสอบ
ขึ้นอยู่กับข้อมูลที่คุณอาจต้องการใช้สวิตช์บางตัวเช่นกัน
sort -u sort | uniqมันบันทึกกระบวนการลด I / O ทั้งหมดและลดจำนวนการเปรียบเทียบทั้งหมดที่ต้องทำ
คุณสามารถใช้ได้:
grep -rohP "(mySearchString)" . | sort -u
-r: เรียกซ้ำ
-o: พิมพ์ส่วนที่ตรงกันของข้อความเท่านั้น
-h: อย่าพิมพ์ชื่อไฟล์
-P: สไตล์ Perl regex (คุณอาจใช้ -E แทนขึ้นอยู่กับกรณีของคุณ)
sort -uดีกว่าsort | uniqที่ @Chris Johnsen ชี้ให้เห็น
sortก่อนuniqในกรณีที่ข้อมูลไม่ได้รับคำสั่ง มิฉะนั้นuniqจะไม่ทำงานอย่างสมบูรณ์