ว่าฉันมีไฟล์ที่มี:
A
A
A
B
CC
ฉันต้องการให้ผลลัพธ์เช่นนี้
A 3
B 1
CC 1
ว่าฉันมีไฟล์ที่มี:
A
A
A
B
CC
ฉันต้องการให้ผลลัพธ์เช่นนี้
A 3
B 1
CC 1
คำตอบ:
ฉันคิดออก; หนึ่งในuniq
ตัวเลือกคือ-c
สำหรับ "คำนำหน้าบรรทัดตามจำนวนที่เกิดขึ้น":
$ uniq -c
sort | uniq
A \ A \ A \ B \ A \ CC
ผลผลิตเพียงuniq -c
จะแสดงและการแสดงในภายหลังA 3
A 1
การเรียงลำดับก่อนจะรับประกันว่ามีการรวมกลุ่มของบรรทัดที่เหมือนกันทั้งหมด
ฉันเพิ่งมาที่นี่พร้อมกับปัญหาที่คล้ายกัน จากนี้ฉันจัดการเพื่อรวบรวมคำสั่งขั้นสูงเล็กน้อยซึ่งฉันหวังว่าจะเป็นประโยชน์สำหรับผู้อื่น
ดังที่สตีเว่นดีกล่าวในความคิดเห็นข้างต้นuniq
มีเพียงจำนวนบรรทัดการทำซ้ำที่อยู่ติดกันดังนั้นคุณต้องเรียงลำดับบรรทัดก่อน หลังจากนั้นเราจะพบบรรทัดที่ไม่ซ้ำกันแล้วเรียงลำดับอีกครั้งดังนั้นบรรทัดที่เกิดขึ้นส่วนใหญ่จะอยู่ด้านบน
sort file.txt | uniq -c | sort -nr > output.txt
output.txt
เอาท์พุทถูกเปลี่ยนเส้นทางไปลงในแฟ้ม หากคุณเพียงต้องการดูผลลัพธ์ในบรรทัดคำสั่งให้ลบการเปลี่ยนเส้นทางและเปลี่ยนคำสั่งสุดท้ายเป็นsort -n
เพื่อให้บรรทัดที่พบบ่อยที่สุดจะอยู่ที่ด้านล่างนั่นคือยังอยู่บนหน้าจออย่างแน่นอน
cat file.txt | sort
sort file.txt
:)
cat
สิ่งที่น่าสนใจได้อย่างรวดเร็ว cat
ตั้งแต่คุณรู้ว่าไม่มี
< file.txt sort | uniq -c
แล้วเขียนเป็น cat
นี้เป็นเรื่องง่ายที่จะแก้ไขและยังคงหลีกเลี่ยงไม่จำเป็น
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'