คำถามติดแท็ก uniq

5
อะไรคือความแตกต่างระหว่าง "sort -u" และ "sort | UNIQ”?
ทุกที่ที่ฉันเห็นคนที่ต้องการเรียงลำดับรายการที่ไม่ซ้ำใครพวกเขาจะไปถึงsort | uniqเสมอ ฉันไม่เคยเห็นตัวอย่างที่มีคนใช้sort -uแทน ทำไมจะไม่ล่ะ? ความแตกต่างคืออะไรและทำไมการใช้ uniq จึงดีกว่าการจัดเรียงค่าสถานะเฉพาะ
120 bash  sort  uniq 

7
ฉันจะลบรายการที่ซ้ำกันใน. bash_history ของฉันเพื่อรักษาลำดับได้อย่างไร
ฉันสนุกกับการใช้control+rเพื่อค้นหาประวัติคำสั่งของฉันซ้ำ ๆ ฉันพบตัวเลือกที่ดีบางอย่างที่ฉันชอบใช้กับมัน: # ignore duplicate commands, ignore commands starting with a space export HISTCONTROL=erasedups:ignorespace # keep the last 5000 entries export HISTSIZE=5000 # append to the history instead of overwriting (good for multiple connections) shopt -s histappend ปัญหาเดียวสำหรับฉันคือการerasedupsลบรายการที่ซ้ำกันตามลำดับเท่านั้นดังนั้นด้วยคำสั่งสตริงนี้: ls cd ~ ls lsคำสั่งจริงจะถูกบันทึกไว้เป็นครั้งที่สอง ฉันคิดเกี่ยวกับการทำงานเป็นระยะ ๆ ด้วย: cat .bash_history | …

4
ทำอย่างไรถึงจะได้ผลลัพธ์ที่ไม่เหมือนใครโดยไม่ต้องเรียงลำดับข้อมูล?
$ cat data.txt aaaaaa aaaaaa cccccc aaaaaa aaaaaa bbbbbb $ cat data.txt | uniq aaaaaa cccccc aaaaaa bbbbbb $ cat data.txt | sort | uniq aaaaaa bbbbbb cccccc $ ผลที่ผมต้องการก็คือการแสดงทุกบรรทัดจากไฟล์ต้นฉบับลบที่ซ้ำกันทั้งหมด (ไม่เพียง แต่คนที่ติดต่อกัน) ขณะที่ยังคงคำสั่งเดิมของงบในแฟ้ม ในตัวอย่างนี้ผลลัพธ์ที่ฉันกำลังมองหาคือ aaaaaa cccccc bbbbbb ฉันจะใช้uniqงานการดำเนินการทั่วไปได้อย่างไร?

2
awk '! a [$ 0] ++' ทำงานอย่างไร
หนึ่งซับนี้จะลบบรรทัดที่ซ้ำกันออกจากการป้อนข้อความโดยไม่ต้องเรียงลำดับล่วงหน้า ตัวอย่างเช่น: $ cat >f q w e w r $ awk '!a[$0]++' <f q w e r $ รหัสเดิมที่ฉันพบใน internets อ่านได้: awk '!_[$0]++' นี่เป็นสิ่งที่ทำให้ฉันงุนงงมากขึ้นเมื่อฉัน_มีความหมายพิเศษใน awk เช่นใน Perl แต่กลายเป็นชื่อของอาร์เรย์ ตอนนี้ฉันเข้าใจตรรกะเบื้องหลังหนึ่งซับ: แต่ละบรรทัดอินพุตถูกใช้เป็นคีย์ในอาร์เรย์แฮชดังนั้นเมื่อเสร็จสมบูรณ์แฮชจะมีบรรทัดที่ไม่ซ้ำกันตามลำดับการมาถึง สิ่งที่ฉันต้องการเรียนรู้คือสัญกรณ์นี้ตีความโดย awk ได้อย่างไร เช่นความหมายของสัญญาณบาง ( !) และองค์ประกอบอื่น ๆ ของข้อมูลโค้ดนี้ มันทำงานยังไง?

4
uniq ไม่แตกต่างกันมากพอที่จะมี uniq --unique อย่างไร
นี่คือคำสั่งในไฟล์สุ่มจากpastebin : wget -qO - http://pastebin.com/0cSPs9LR | wc -l 350 wget -qO - http://pastebin.com/0cSPs9LR | sort -u | wc -l 287 wget -qO - http://pastebin.com/0cSPs9LR | sort | uniq | wc -l 287 wget -qO - http://pastebin.com/0cSPs9LR | sort | uniq -u | wc -l 258 หน้าคนไม่ชัดเจนในสิ่งที่-uธงทำ คำแนะนำใด ๆ?
35 uniq 

6
การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ของชื่อไฟล์ซ้ำกัน
ฉันมีวิธีการค้นหาไฟล์ทั้งหมดในไดเรกทอรีที่มีชื่อไฟล์ซ้ำกันหรือไม่โดยไม่คำนึงถึงตัวอักษร (ตัวพิมพ์ใหญ่และ / หรือตัวพิมพ์เล็ก)

12
ลบบรรทัดที่ซ้ำกันเป็นคู่หรือไม่
ฉันพบกรณีใช้งานวันนี้ มันดูเหมือนง่ายได้อย่างรวดเร็วก่อน แต่เล่นซอรอบกับsort, uniq, sedและawkเผยให้เห็นว่ามันเป็นขี้ปะติ๋ว ฉันจะลบบรรทัดที่ซ้ำกันทุกคู่ได้อย่างไร กล่าวอีกนัยหนึ่งหากมีจำนวนซ้ำของบรรทัดที่กำหนดให้ลบทั้งหมด; หากมีจำนวนบรรทัดที่ซ้ำกันเป็นเลขคี่ลบทั้งหมดยกเว้นหนึ่งบรรทัด (สามารถป้อนข้อมูลการเรียงลำดับได้) วิธีการแก้ปัญหาที่สง่างามสะอาดเป็นที่ต้องการ อินพุตตัวอย่าง: a a a b b c c c c d d d d d e ตัวอย่างผลลัพธ์: a d e

1
วิธีลบบรรทัดที่ซ้ำกันใน textfile หลาย GB ขนาดใหญ่?
คำถามของฉันคล้ายกับคำถามนี้แต่มีข้อ จำกัด ที่แตกต่างกันสองข้อ: ฉันมี\nรายการคำศัพท์ที่คั่นขนาดใหญ่- หนึ่งคำต่อบรรทัด ขนาดไฟล์มีตั้งแต่ 2GB ถึงใหญ่ถึง 10GB ฉันต้องการลบบรรทัดที่ซ้ำกัน กระบวนการอาจเรียงลำดับรายการในระหว่างการลบรายการที่ซ้ำกัน แต่ไม่จำเป็น มีพื้นที่ว่างเพียงพอบนพาร์ติชันเพื่อเก็บ wordlist ใหม่ที่ไม่ซ้ำใคร ฉันลองทั้งสองวิธีนี้แล้ว แต่พวกเขาทั้งสองล้มเหลวโดยไม่มีข้อผิดพลาดของหน่วยความจำ sort -u wordlist.lst > wordlist_unique.lst awk '!seen[$0]++' wordlist.lst > wordlist_unique.lst awk: (FILENAME=wordlist.lst FNR=43601815) fatal: assoc_lookup: bucket-ahname_str: can't allocate 10 bytes of memory (Cannot allocate memory) ฉันจะลองวิธีอื่นได้อย่างไร

2
`uniq -t` ทำอะไร?
ฉันมีรหัสเก่าจากปี 2003 ซึ่งใช้-tตัวเลือกสำหรับuniqคำสั่ง มันส่งข้อผิดพลาดเนื่องจากตัวเลือกนั้นอาจไม่ได้รับการสนับสนุนอีกต่อไป นี่คือส่วนที่ใช้คำสั่ง: egrep -n "{ IA32_OP" ia32-decode.c | \ awk '{ print $1 $3 $4 }' | \ sort -t '(' +1 | \ uniq -t ':' -f 1 | \ sed 's/\(.*\)\:IA32_OP(\(.*\)),/#define IA32_OP_\2 \1/g' >> ia32_opcodes.h ตัวเลือกนั้นทำอะไรตอนนั้น? ฉันสามารถแทนที่คำสั่งนั้นด้วยอะไร
15 uniq 

4
คู่ผลรวมของคอลัมน์ตามเขตข้อมูลที่ตรงกัน
ฉันมีไฟล์ขนาดใหญ่ในรูปแบบต่อไปนี้: 2 1019 0 12 2 1019 3 0 2 1021 0 2 2 1021 2 0 2 1022 4 5 2 1030 0 1 2 1030 5 0 2 1031 4 4 หากค่าในคอลัมน์ 2ตรงกันฉันต้องการรวมผลรวมในคอลัมน์ 3และ4ของทั้งสองบรรทัดหรือจะรวมเพียงผลรวมของค่าในบรรทัดที่ไม่ซ้ำกัน ดังนั้นผลลัพธ์ที่ฉันหวังไว้จะเป็นดังนี้: 2 1019 15 2 1021 4 2 1022 9 2 1030 6 2 …

5
ลบบรรทัดที่ซ้ำกันที่อยู่ติดกันในขณะที่รักษาการสั่งซื้อ
ฉันมีไฟล์ที่มีหนึ่งคอลัมน์ที่มีชื่อที่ซ้ำหลายครั้งในแต่ละครั้ง ฉันต้องการรวมการทำซ้ำแต่ละครั้งเป็นหนึ่งในขณะที่การทำซ้ำชื่ออื่นที่มีชื่อเดียวกันที่ไม่ติดกับชื่อซ้ำกันอื่น ๆ เช่นฉันต้องการเลี้ยวซ้ายไปทางขวา: Golgb1 Golgb1 Golgb1 Akna Golgb1 Spata20 Golgb1 Golgb1 Golgb1 Akna Akna Akna Akna Spata20 Spata20 Spata20 Golgb1 Golgb1 Golgb1 Akna Akna Akna นี่คือสิ่งที่ฉันใช้: perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt อย่างไรก็ตามวิธีนี้จะช่วยให้ตัวแทนหนึ่งคนจากด้านซ้ายเท่านั้น (เช่น Golb1 และ Akna ไม่ซ้ำกัน) มีวิธีในการเก็บชื่อที่ไม่ซ้ำกันสำหรับแต่ละบล็อกในขณะที่รักษาชื่อที่ทำซ้ำในบล็อกหลายบล็อกที่ไม่ติดกันหรือไม่
11 awk  sed  sort  uniq 

2
บรรทัด `uniq 'ของฉันหรือ` sort -u' หายไปไหนด้วยอักขระ Unicode บางตัว
เกิดอะไรขึ้นในข้อมูลโค้ดต่อไปนี้ ฉันไม่ได้รับผลลัพธ์ที่คาดหวัง ฉันคิดว่ามันเป็นข้อผิดพลาด แต่มันเกิดขึ้นสำหรับ 2 โปรแกรมที่แตกต่างกัน (uniq และ sort) ดังนั้นฉันสงสัยว่ามันเป็นบางสิ่งที่ต้องทำกับ ... อืมฉันไม่รู้ว่า ... ดังนั้นคำถาม ตัวอย่าง 3 (4 จาก) แรกทำงานได้ แต่ 4 ล้มเหลว! ฉันคาดว่าจะมีพฤติกรรมแบบเดียวกันสำหรับตัวละครทุกตัว กล่าวคือ เพื่อพิมพ์ 2 บรรทัด (จากอินพุต 3 บรรทัด) ... แต่ในกรณีที่ 4 ฉันได้รับเพียง 1 บรรทัด (สำหรับทั้งคู่sort -uและuniq); สอง lins ที่เหมือนกันเพิ่งหายไป! ฉันได้แปลงเอาท์พุท '\ n' เป็นพื้นที่เพื่อความกะทัดรัด ฉันใช้uniqและเรียงลำดับจาก (GNU coreutils) 7.4 ... …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.