ระบบปฏิบัติการลินุกซ์มีเครื่องมือช่วยให้เราสามารถจัดการกับไฟล์ข้อความ เช่น เรียงลำดับข้อมูล สำเนาข้อมูลไปยังอีกที่นึง โดยเราจะมาทำความรู้จักกับบางเครื่องมือดังนี้
คำสั่ง sort
คำสั่ง sort เป็นคำสั่งที่ใช้ในการเรียงบรรทัดในไฟล์ข้อความตามตามตัวอักษร โดยเราเป็นผู้กำหนดคีย์ที่จะใช้ในการเรียงลำดับ ตัวอย่างการใช้งาน เช่น
sort filename เป็นการเรียงลำดับบรรทัดในไฟล์ตามตัวอักษรโดยใช้ตัวอักษรแรกสุดของแต่ละบรรทัดเป็นคีย์ โดยไฟล์ filename คือชื่อไฟล์ที่เราต้องการดำเนินการ
cat filename1 filename2 | sort เป็นการรวมข้อความจาก 2 ไฟล์และเรียงลำดับ จากนั้นแสดงบนหน้าจอ
sort -r filename เป็นการเรียงลำดับบรรทัดในไฟล์แบบย้อนตัวอักษรโดยใช้ตัวอักษรแรกสุดของแต่ละบรรทัดเป็นคีย์ โดยไฟล์ filename คือชื่อไฟล์ที่เราต้องการดำเนินการ
sort -k 3 filename เป็นการเรียงลำดับบรรทัดในไฟล์ตามตัวอักษรโดยใช้ฟิลด์ที่ 3 แต่ละบรรทัดเป็นคีย์ โดยไฟล์ filename คือชื่อไฟล์ที่เราต้องการดำเนินการ
คำสั่ง uniq
คำสั่ง uniq ใช้ในการลบบรรทัดที่มีคีย์ตามที่เรากำหนดซ้ำกัน โดยต้องเรียงลำดับบรรทัดด้วยคำสั่ง sort ก่อนจึงจะใช้คำสั่ง uniq ตัวอย่างเช่น “sort filename | uniq” หรือถ้าเราเอาข้อมูลจากหลายไฟล์มารวมกันเป็นไฟล์ใหม่และต้องการลบบรรทัดที่ซ้ำกันออกไปสามารถทำได้โดยใช้คำสั่ง “sort filename1 filename2 | uniq filename3” หรือจะใช้คำสั่ง “sort -u filename1 filename2 > filename3“ ก็ได้เช่นกัน หากต้องการทราบจำนวนบรรทัดที่ซ้ำกันให้ใช้คำสั่ง “uniq -c filename”
คำสั่ง paste
คำสั่ง paste เป็นคำสั่งที่ใช้ในการ merge ข้อมูลของไฟล์เข้าด้วยกันในแบบบรรทัดต่อบรรทัด โดยคำสั่ง paste รู้จักรูปแบบข้อมูลในแบบตารางเหมือนกับคำสั่ง awk โดยเราสามารถระบุได้ว่าข้อมูลแต่ละฟิลด์คั่นตัวคั่น (delimiter) ด้วยอะไร โดยค่าตั้งต้นคำสั่ง paste จะมองหา space tab และ enter แต่เราสามารถบอกคำสั่ง paste ว่าใช้ตัวคั่นแบบอื่นได้โดยใช้ออปชั่น -d เช่น “paste -d ‘:’ ” เป็นการระบุว่าใช้ : เป็นตัวคั่น และยังมีออปชั่น -s ที่เป็นการเปลี่ยนแกนในการ merge ข้อมูลเป็นแบบแนวนอน หากเราต้องการบันทึกผลลัพธ์ในไฟล์ใหม่ให้ใช้คำสั่ง > newfilename ต่อท้าย เช่น “paste -d ‘:’ filename1 filename2 > newfilename”
ตัวอย่างการใช้คำสั่ง paste
คำสั่ง Join
คำสั่ง join เป็นคำสั่งที่ใช้ในการ merge ข้อมูลของไฟล์เข้าด้วยกันตามคีย์ฟิลด์ที่กำหนดในแบบบรรทัดต่อบรรทัด ดังอย่างตามภาพ โดยค่าตั้งต้นจะใช้ฟิลด์แรกเป็นคีย์และแต่ละฟิลด์คั่นด้วย space
ภาพแสดงการใช้คำสั่ง join
คำสั่ง split
คำสั่ง split เป็นคำสั่งที่ใช้ในการแบ่งไฟล์ออกเป็นหลายๆไฟล์ตามจำนวนบรรทัดที่กำหนดโดยที่ไฟล์เดิมยังคงอยู่เหมือนเดิมคำสั่ง split มักจะถูกใช้ในการแบ่งไฟล์ขนาดใหญ่ออกเป็นหลายๆไฟล์เพื่อให้ง่ายต่อการดูหรือจัดการโดยค่าตั้งต้นของคำสั่งคือแบ่งออกเป็นไฟล์ละ 1,000 บรรทัด ตัวอย่างการใช้คำสั่ง split เช่น split filename newfilename ซึ่งไฟล์ใหม่ที่ถูกสร้างขึ้นจะมีตัวอักษร running ต่อท้าย เช่น newfilenameaa newfilenameab เป็นต้น หรือสามารถกำหนดจำนวนบรรทัดเองได้ เช่น split -5 filename newfilename
ภาพแสดงการใช้คำสั่ง split
จากตัวอย่างจะตัดแบ่งไฟล์ชื่อ american-english ซึ่งจากการตรวจสอบด้วยคำสั่ง wc -l american-english พบว่าไฟล์มีจำนวนบรรทัดเท่ากับ 99171 เราจึงตัดแบ่งไฟล์ด้วยคำสั่ง “split american-english dictionary” ซึ่งเราจะได้ผลลัพธ์เป็นไฟล์ที่ขึ้นต้นด้วยคำว่า dictionary เช่น dictionaryyaa dictionaryyab เป็นต้น
การค้นหาข้อความที่ต้องการ
ในการค้นหาข้อความหรือส่วนของข้อความที่ต้องการเราจะใช้ Regular Expressions หรือเรียกย่อๆว่า regex ซึ่ง Regular Expressions คือ การกำหนดรูปแบบหรือกลุ่มคำเพื่อเอาไว้ใช้ค้นหาข้อความต่างๆตามรูปแบบที่เราต้องการ(Search Pattern) เราสามารถค้นหาได้ทั้งอักขระธรรมดา หรือค้นหาความข้อที่กำหนดไว้ หรือจะเป็นอักขระพิเศษก็สามารถค้นหาได้ และสามารถค้นหาตามตำแหน่งที่กำหนดได้ เช่น หาที่ต้นบรรทัดหรือท้ายบรรทัด หรือต้นคำหรือท้ายคำ regex ประกอบด้วยตัวอักษรธรรมและอักขระพิเศษอย่าง * และ $
เราสามารถใช้งาน regex กับโปรแกรมจัดการไฟล์ข้อความ เช่น vi sed awk find และ grep ได้ด้วย ตัวอย่างการใช้ regex เช่น สมมุติเรามีข้อความว่า “the quick brown fox jumped over the lazy dog” ดังนั้น
ค้นหาด้วย ผลลัพธ์ คำอธิบาย
a.. azy . (จุด) หมายถึงอักษรอะไร
ก็ได้
b.|j. br หรือ ju | หมายถึง หรือ
..$ og $ หมายถึง หาจากท้าย
ข้อความ
l.* lazy dog * หมายถึงทั้งหมด เลยรวมกับ
จุดเป็น อะไรก็ได้ทั้งหมด
l.*y lazy * หมายถึงทั้งหมดถึง y
the.* ทั้งประโยค * หมายถึงทั้งหมด
คำสั่ง grep
คำสั่ง grep เป็นคำสั่งที่ใช้กันอย่างแพร่หลายในการค้นหาข้อความที่ต้องการ โดยจะค้นหารูปแบบของข้อความตามที่กำหนด และสามารถใช้ regex ได้ ตัวอย่างการใช้งาน เช่น
grep pattern filename เป็นการค้นหาตามรูปแบบที่ระบุและพิมพ์บรรทัดที่หาพบ โดย pattern คือรูปแบบของคำที่ต้องการค้นหา และ filename คือชื่อไฟล์ที่ต้องการค้นหา
grep -v pattern filename เป็นการค้นหาตามรูปแบบที่ระบุและพิมพ์บรรทัดที่หาไม่พบ โดย pattern คือรูปแบบของคำที่ต้องการค้นหา และ filename คือชื่อไฟล์ที่ต้องการค้นหา
grep 0-9 filename พิมพ์บรรทัดที่มีเลข 0-9 โดย 0-9 คือรูปแบบของคำที่ต้องการค้นหา และ filename คือชื่อไฟล์ที่ต้องการค้นหา
grep -C 3 pattern filename พิมพ์ 3 บรรทัดก่อนหน้าและหลังของบรรทัดที่พบข้อความ โดย pattern คือรูปแบบของคำที่ต้องการค้นหา และ filename คือชื่อไฟล์ที่ต้องการค้นหา
ตัวอย่างการใช้งานคำสั่ง grep
คำสั่ง strings
คำสั่ง strings เป็นคำสั่งที่ใช้ในการสกัด (extract) เอาข้อความที่สามารถพิมพ์โดยเครื่องพิมพ์หรือแสดงบนหน้าจอได้จากไฟล์ มีประโยชน์ในการเอาข้อความที่คนอ่านรู้เรื่องออกมาจากไฟล์โปรแกรมที่คอมไฟล์แล้ว (Binary File) แต่ถ้าเป็นการค้นหาข้อความจากไฟล์ข้อความให้ใช้ grep จะสะดวกกว่า ในการใช้คำสั่ง strings เรามักจะใช้คู่กับคำสั่ง grep เพราะคำสั่ง strings จะเอาข้อความทั้งหมดออกมาซึ่งอาจจะเยอะมาก หากเราพอจะรู้ว่าเราค้นหาข้อความประมาณไหน เราสามารถใช้คำสั่ง strings filename | grep pattern โดย pattern คือรูปแบบของคำที่ต้องการค้นหา เพื่อให้ได้ผลลัพธ์ที่แม่นยำมากขึ้น
ตัวอย่างการใช้งานคำสั่ง strings
คำสั่ง tr
คำสั่ง tr เป็นเครื่องมือในการแปลงตัวอักษรแต่ละตัวหรือลบตัวอักษรออกไป เราสามารถใช้เครื่องมือนี้ในการจัดการกับไฟล์ข้อความ เช่น เปลี่ยนขนาดของตัวอักษร หรือใช้ในการนับคำ นับบรรทัด หรือนับจำนวนตัวอักษร โดยมีรูปแบบการใช้งานคือ tr [options] ‘text1’ [‘text2’] โดย text1 คือข้อความที่ต้องการแก้ไขหรือลบออก text2 คือข้อความที่จะใช้แทนที่ข้อความใน text1 เราจะใช้ ‘ ‘ ครอบข้อความไว้เสมอเพื่อป้องกันมิให้โปรแกรมเชลล์เข้าใจว่าข้อความเป็นคำสั่งอย่างหนึ่งอย่างใด และทั้ง option และ text2 จะมีหรือไม่มีก็ได้ ตัวอย่างการใช้งาน เช่น
cat filename | tr a-z A-Z
เป็นการแสดงเนื้อหาของไฟล์โดยให้แปลงเป็นตัวอักษรใหญ่ทั้งหมด
tr ‘{}’ ‘()’ inputFileName outputFileName
เป็นการแก้ไขชนิดของวงเล็บในไฟล์ inputFileName และบันทึกผลลัพธ์ในไฟล์ outPutFileName
echo “This is for testing” | tr [:space:] ‘\t’
เป็นการแก้ไขจาก space เป็น tab
echo “the geek stuff” | tr -d ‘t’
เป็นการใช้ออปชั่น -d เพื่อลบตัวอักร t
echo “This is for testing” | tr -s [:space:]
เป็นการใช้ออปชั่น -s ลดอักขระ space ที่ติดกันหลายตัวให้เหลือตัวเดียว
echo “my username is 432234” | tr -cd [:digit:]
เป็นการเอาตัวอักษรที่ไม่ได้เป็นตัวเลขออกได้ผลลัพธ์คือ 432234
tr -cd [:print:] < file.txt
เป็นการเอาตัวอักษรที่พิมพ์ไม่ได้ (พวก control character) ออกจากไฟล์
tr -s ‘\n’ ‘ ‘ < file.txt
เป็นการเอาบรรทัดทุกบรรทัดในไฟล์มาต่อกันเป็นบรรทัดเดียว
คำสั่ง tee
คำสั่ง tee เป็นคำสั่งที่เอาผลลัพธ์ที่แสดงบนหน้าจอไปเขียนลงในไฟล์ด้วย เช่น หากเราใช้คำสั่ง ls -l ผลลัพธ์คือการแสดงรายการไดเร็คทอรี่บนหน้าจอ และถ้าเราใช้คำสั่ง ls -l | tee filename ผลลัพธ์จะถูกบันทึกลงในไฟล์ด้วย
ตัวอย่างการใช้งานคำสั่ง tee
คำสั่ง wc
คำสั่ง wc (word count) เป็นคำสั่งที่ใช้นับจำนวนบรรทัด ( -l )คำ (-w) หรือตัวอักษร (-c)
ตัวอย่างการใช้งานคำสั่ง wc
คำสั่ง cut
คำสั่ง cut เป็นคำสั่งที่ใช้ในการจัดการไฟล์ที่มีการแสดงข้อมูลในลักษณะคอลัมภ์ที่ใช้ tab เป็นตัวคั่น (delimiter) เพื่อตัดเอาข้อมูลเฉพาะคอลัมภ์ที่ต้องการออกมา เราสามารถกำหนดผ่านออปชั่นให้อ่านตัวคั่นแบบอื่นได้ด้วย เช่น ls -l | cut -d” ” -f3 เป็นการกำหนดให้อ่านตัวคั่นที่เป็น space
ตัวอย่างการใช้งานคำสั่ง cut