บางครั้งไฟล์ข้อมูลที่เราต้องการจะเปิดดูอาจจะมีขนาดใหญ่มาก ถ้าเปิดดูทั้งไฟล์หรือเราจะทดลองโปรแกรมอะไรซักอย่าง หากเราเลือกประมวลผลไฟล์ใหญ่ทั้งไฟล์อาจจะทำให้เครื่องคอมของเราอาจจะช้าหรือถ้าเครื่องที่ทรัพยาการค่อนข้างน้อยอาจจะเปิดไม่ได้เลย วันนี้ก็เลยลองหาคำสั่งที่เป็น command line ที่จะทำการสุ่มข้อมูลเฉพาะบางบรรทัดออกมา เพื่อดูข้อมูลคร่าวๆ จากไฟล์ที่เราต้องการ ว่าข้อมูลที่เก็บในไฟล์นี้เป็นข้อมูลลักษณะไหน เกี่ยวกับอะไร เก็บข้อมูลอย่างไร
เริ่มต้นด้วยการสร้างไฟล์ข้อมูลตัวอย่าง
ตั้งชื่อไฟล์ว่า “example.txt” ในไฟล์ใส่ข้อมูลลงไป 6 บรรทัด
Twinkle twinkle little star. How I wonder what you are. Up above the world so high. Like a diamond in the sky. Twinkle twinkle little star. How I wonder what you are.
เสร็จแล้วทำการบันทึกไฟล์ให้เรียบร้อย
คำสั่งสุ่มข้อมูลจาก text ไฟล์ที่ระบุมา 1 บรรทัด
สำหรับคำสั่งที่ทำการสุ่มข้อมูลตัวอย่างจากไฟล์ที่ระบุนั้น ไปค้นข้อมูลมาก็เจอการใช้คำสั่ง shuf ซึ่งเป็นคำสั่งพื้นฐานคำสั่งนึงที่มีให้ใช้ใน linux ทั่วไป
shuf -n 1 (ชื่อไฟล์ที่จะดูข้อมูล)
# รันคำสั่งรอบแรก shuf -n 1 example.txt # ผลที่ได้ # How I wonder what you are. # รันคำสั่งรอบที่สอง shuf -n 1 example.txt # ผลที่ได้ # Up above the world so high.
เนื่องจากคำสั่งนี้เป็นคำสั่งที่สุ่มเลือกข้อมูลออกมา ดังนั้นจะเห็นว่าเมื่อเรารันคำสั่งแต่ละครั้ง ข้อมูลบรรทัดที่สุ่มเลือกออกมาจะแตกต่างกัน
คำสั่งสุ่มข้อมูลจาก text ไฟล์ที่ระบุมา 3 บรรทัด
คราวนี้เราจะลองสุ่มเลือกข้อมูลจากไฟล์ออกมาพร้อมกัน 3 บรรทัด เรายังสามารถใช้คำสั่ง shuf ได้เหมือนเดิม เพียงแค่ปรับตัวแปร -n เปลี่ยนจากระบุ 1 บรรทัดให้เป็น 3 บรรทัด
# รันคำสั่งรอบแรก shuf -n 3 example.txt # ผลที่ได้ # Like a diamond in the sky. # Twinkle twinkle little star. # Twinkle twinkle little star. # รันคำสั่งรอบที่สอง shuf -n 3 example.txt # ผลที่ได้ # How I wonder what you are. # Twinkle twinkle little star. # Like a diamond in the sky.
จะเห็นว่าตอนรันคำสั่งรอบแรก เมื่อสุ่มข้อมูลออกมา บางครั้งอัลกอริทึมในการสุ่มอาจจะเลือกสุ่มไปเจอบรรทัดข้อมูลเดียวกัน ซึ่งการสุ่มโดยใช้คำสั่ง shuf นี้ก็อาจจะทำให้เจอการสุ่มข้อมูลเดิมซ้ำๆ กันได้ในบางรอบ
ทำการบันทึกข้อมูลบรรทัดที่เราสุ่มออกมาลงไปในไฟล์ใหม่
shuf -n 1 (ชื่อไฟล์ที่จะดูข้อมูล) > (ชื่อไฟล์ที่ต้องการบันทึกข้อมูลใหม่)
# สุ่มข้อมูล 3 บรรทัดจากไฟล์ example.txt แล้วบันทึกข้อมูลนั้นลงในไฟล์ output.txt shuf -n 3 example.txt > output.txt # ผลที่ได้ ข้อมูลบรรทัดที่ถูกสุ่มออกมาจากไฟล์ example.txt จะถูกนำไปบันทึกในไฟล์ output.txt โดยไม่ปรินท์ออกมาใน terminal