คุณสามารถทำได้โดยใช้คำสั่งในตัว
sort
ฟีดเนื้อหาของแฟ้ม เราต้องการสิ่งนี้สำหรับขั้นตอนต่อไป
uniq -c
นี้ไป มันจะนับการเกิดขึ้นที่ไม่ซ้ำกันของแต่ละบรรทัด หากบรรทัดที่คล้ายกันไม่ได้อยู่ติดกันจะไม่สามารถทำงานได้โดยไม่ต้องคัดแยกมาก่อน
- จากนั้นป้อนไปยังอีก
sort
ซึ่งตอนนี้เรียงลำดับในการกลับรายการ ( r
) และขึ้นอยู่กับการn
ตีความตัวเลข ( ) ของการuniq
ส่งออก เราต้องการตัวเลือกที่เป็นตัวเลขเนื่องจากไม่เช่นนั้นพื้นที่ด้านหน้าของตัวเลขจะนำไปสู่ผลลัพธ์ที่ไม่ถูกต้อง (ดูที่GNU sort
ช่วยมาก)
head
สุดท้ายแสดงเฉพาะสิบสองสายแรกที่มี
คำสั่งก็จะเป็น:
sort test.txt | uniq -c | sort -rn | head -n 12
เอาต์พุตที่นี่มีจำนวนจริงของการเกิดขึ้น
หากต้องการรับรายการดิบของบรรทัดเท่านั้นคุณสามารถไพพ์เอาต์พุตไปที่sed
:
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
ตัวอย่าง:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
เอาต์พุตจากคำสั่งแรก แต่เลือก 2 จากhead
:
6 Hello there!
3 Look at me!
เอาต์พุตจากคำสั่งที่สอง:
Hello there!
Look at me!