Ubuntu, Linux – คำสั่งสำหรับสุ่มตัวอย่างข้อมูลบางส่วนออกมาจากไฟล์

บางครั้งไฟล์ข้อมูลที่เราต้องการจะเปิดดูอาจจะมีขนาดใหญ่มาก ถ้าเปิดดูทั้งไฟล์หรือเราจะทดลองโปรแกรมอะไรซักอย่าง หากเราเลือกประมวลผลไฟล์ใหญ่ทั้งไฟล์อาจจะทำให้เครื่องคอมของเราอาจจะช้าหรือถ้าเครื่องที่ทรัพยาการค่อนข้างน้อยอาจจะเปิดไม่ได้เลย วันนี้ก็เลยลองหาคำสั่งที่เป็น 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