`uniq -t` ทำอะไร?


15

ฉันมีรหัสเก่าจากปี 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

ตัวเลือกนั้นทำอะไรตอนนั้น? ฉันสามารถแทนที่คำสั่งนั้นด้วยอะไร


นี่คือแหล่งที่มาของ BTW: web.archive.org/web/20040217131820/http://www.team-teso.net/ …
Babken Vardanyan

ตามman uniq, -f 1หลีกเลี่ยงการเปรียบเทียบฟิลด์แรก ผมขอสรุปจาก-t ':'ที่-tควรจะเปลี่ยน seperator :เขตข้อมูลจากช่องว่างที่จะ
Martin von Wittich

อาจมีความเกี่ยวข้อง: stackoverflow.com/questions/10546337/…อาจ-tเป็นตัวเลือกเฉพาะของเดเบียนที่ถูกลบภายหลัง
Martin von Wittich

1
อาจเกี่ยวข้อง: bugs.debian.org/cgi-bin/bugreport.cgi?bug=117016
Martin von Wittich

1
ฉันมักจะสงสัยว่าทำไมuniqไม่เหมือนกัน-tและ-kเป็นประเภทหรือทำไมการเรียงลำดับไม่ได้มีคุณสมบัติทั้งหมดของการuniqรวม (ตั้งแต่ตอนนี้มี-u) บรรดา-w/ -f/ -sจาก GNU UNIQ ทำให้ไม่รู้สึก sortทำไมพวกเขาไม่สามารถใช้ไวยากรณ์เช่นเดียวกับ
Stéphane Chazelas

คำตอบ:


13

การอ้างอิงเดียวที่ฉันพบได้-tในแพทช์นี้ในรายชื่อผู้รับจดหมายของ GNU ซึ่งมีข้อมูลอื่น ๆ :

+  -t, --separator=S     use a character in string S as field separator\n\

เห็นได้ชัดว่านี่เป็นส่วนขยายของ GNU แต่ไม่ได้ใช้งานอีกต่อไป ดูเหมือนว่าจะอนุญาตให้เลือกอักขระที่คั่นสำหรับเขตข้อมูลอื่นนอกเหนือจากช่องว่างหรือแท็บ ลองเปลี่ยนใหม่

uniq -t ':' -f 1 | \

กับ

sed 's/:/ /' | \
uniq -f 1 | \

ซึ่งจะแทนที่:ด้วยช่องว่างที่ uniq รู้จักตัวคั่นฟิลด์


ฉันจะเลื่อนgจากsedเนื่องจากมีเพียงฟิลด์แรกที่ข้ามไป ต้องมีโคลอนอย่างน้อยหนึ่งตัวเพื่อให้บรรทัดสุดท้ายทำงานได้ (หวังว่าไม่ใช่ครั้งแรก) ยังไม่มีการรับประกันว่าจะใช้งานได้ (ใด ๆ ในเขตข้อมูลแรกอาจมีช่องว่าง)
แกรม

@ Graeme จุดดีแก้ไข
casey

ใน Debian นั้น coreutils 5.2.1 มีการใช้งาน patch ดังกล่าวและเห็นได้ชัดว่ามันถูกลบออกใน 5.93-1 นั่นคือในเดือนพฤศจิกายนปี 2005
2719058

4

รับmanรายการสำหรับ-fตัวเลือก:

-f, --skip-fields = N

         avoid comparing the first N fields

ฉันคิดว่ามันค่อนข้างปลอดภัยที่จะสมมติว่า-tระบุตัวคั่นฟิลด์ (ซึ่งเป็นกรณีสำหรับsortในบรรทัดด้านบน) การรวมกันของทั้งสองตัวเลือกจะuniqทำงานเฉพาะในส่วนของบรรทัดถัดจากเครื่องหมายโคลอนแรก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.