คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu

แชร์ความรู้ Linux Ubuntu Web Server บทความ การ config server Linux FreeBSD Apache
การติดตั้ง XAMPP Mysql PHP ใครต้องการแชร์ความรู้เรื่องต่างๆ เหล่านี้ให้ ท่านหรืออื่น โพสที่หมวดนี้ได้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 47419
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu
รูปแบบคำสั่ง

โค้ด: เลือกทั้งหมด

grep -rnw '/path/to/file/' -e 'pattern'
-r or -R สำหรับระบุว่าจะค้นหาใน Folder ย่อยๆ ด้วยหรือไม่,
-n แสดงบรรทัดที่เจอข้อความนั้น
-w จำคู่คำที่เจอ.
-l (ตัว L เล็ก ) ค้นหาตรงตามชื่อไฟล์.
-e กำหนดข้อความที่ต้องการค้นหา

เช่น

โค้ด: เลือกทั้งหมด

grep -rnw '/etc/' -e '80xx'
ผลที่ได้
/etc/odoo_demo-server.conf:12:xmlrpc_port = 80xxx

ค้นหาเฉพาะไฟล์ .py ทั้งหมดใน /home

โค้ด: เลือกทั้งหมด

 grep -r --include="*.py" "product.customerinfo" /home
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 47419
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ค้นหาข้อความในไฟล์ php ทั้งหมด

โค้ด: เลือกทั้งหมด

find /home -type f -name "*.php" -exec grep "text_to_search" {} +
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 47419
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

การค้นหาข้อความใน Ubuntu ด้วยคำสั่ง grep

ใน Ubuntu สามารถใช้คำสั่ง เพื่อค้นหาข้อความภายในไฟล์หรือในหลายๆ ไฟล์ได้ โดยมีตัวอย่างการใช้งานดังนี้:
  1. ค้นหาข้อความในไฟล์เดียว:

    โค้ด: เลือกทั้งหมด

    grep 'ข้อความที่ต้องการค้นหา' ชื่อไฟล์
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep 'error' /var/log/syslog
  2. ค้นหาข้อความในหลายๆ ไฟล์ในโฟลเดอร์:

    โค้ด: เลือกทั้งหมด

    grep 'ข้อความที่ต้องการค้นหา' /path/to/โฟลเดอร์/*
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep 'error' /var/log/*
  3. ค้นหาข้อความโดยไม่สนใจตัวพิมพ์ใหญ่-เล็ก:

    โค้ด: เลือกทั้งหมด

    grep -i 'ข้อความที่ต้องการค้นหา' ชื่อไฟล์
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep -i 'error' /var/log/syslog
  4. ค้นหาข้อความพร้อมแสดงหมายเลขบรรทัด:

    โค้ด: เลือกทั้งหมด

    grep -n 'ข้อความที่ต้องการค้นหา' ชื่อไฟล์
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep -n 'error' /var/log/syslog
  5. ค้นหาข้อความในทุกไฟล์ในโฟลเดอร์ (และ subfolder):

    โค้ด: เลือกทั้งหมด

    grep -r 'ข้อความที่ต้องการค้นหา' /path/to/โฟลเดอร์
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep -r 'error' /var/log/
  6. ค้นหาเฉพาะไฟล์ที่มีการค้นหาในชื่อไฟล์:

    โค้ด: เลือกทั้งหมด

    grep 'ข้อความที่ต้องการค้นหา' /path/to/โฟลเดอร์/*ชื่อไฟล์*
    ตัวอย่าง:

    โค้ด: เลือกทั้งหมด

    grep 'error' /var/log/*log*
คำสั่ง grep ยังมีพารามิเตอร์อื่นๆ ที่สามารถใช้ปรับแต่งการค้นหาได้ หากคุณต้องการตัวเลือกเพิ่มเติม สามารถสอบถามได้ครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 47419
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: คำสั่งค้นหาข้อความในไฟล์ และ โพสเดอร์ย่อยๆ ใน Ubuntu

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เพิ่มเติม
คำสั่ง grep ย่อมาจากคำว่า Global Regular Expression Print ซึ่งหมายถึงการค้นหาข้อความที่ตรงกับรูปแบบ (pattern) ที่กำหนดไว้ในข้อความหรือไฟล์ทั่วโลก (global) แล้วพิมพ์ผลลัพธ์ที่ตรงกันออกมา (print) นั่นเองครับ

ตัวอย่างการใช้คำสั่ง grep พร้อมกับ pattern บน Ubuntu
  1. ค้นหาคำที่ตรงกันเป๊ะ:

    โค้ด: เลือกทั้งหมด

    grep 'error' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "error" ที่ตรงกันทั้งหมดในไฟล์
  2. ค้นหาคำที่ขึ้นต้นด้วยอักษรที่ระบุ:

    โค้ด: เลือกทั้งหมด

    grep '^Error' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่ขึ้นต้นด้วยคำว่า "Error" (^ หมายถึงจุดเริ่มต้นของบรรทัด)
  3. ค้นหาคำที่ลงท้ายด้วยอักษรที่ระบุ:

    โค้ด: เลือกทั้งหมด

    grep 'error$' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่ลงท้ายด้วยคำว่า "error" ($ หมายถึงจุดสิ้นสุดของบรรทัด)
  4. ค้นหาบรรทัดที่มีตัวเลข:

    โค้ด: เลือกทั้งหมด

    grep '[0-9]' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีตัวเลข ([0-9] หมายถึงช่วงของตัวเลขจาก 0 ถึง 9)
  5. ค้นหาคำที่มีตัวอักษรตัวใหญ่หรือตัวเล็กก็ได้:

    โค้ด: เลือกทั้งหมด

    grep -i 'Error' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "Error" โดยไม่สนใจว่าตัวอักษรจะเป็นตัวใหญ่หรือตัวเล็ก (-i หมายถึงการไม่สนใจตัวพิมพ์)
  6. ค้นหาคำที่มีอักขระพิเศษ:

    โค้ด: เลือกทั้งหมด

    grep 'Error\.' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "Error." ซึ่งมีจุดตามหลัง (\. ใช้เพื่อระบุจุดให้เป็นอักขระพิเศษ เนื่องจากปกติจุดใช้เพื่อระบุอักขระใดก็ได้)
  7. ค้นหาคำที่ซ้ำกันหลายๆ ครั้ง:

    โค้ด: เลือกทั้งหมด

    grep 'go*gle' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "google", "gogle", "goooogle" และอื่นๆ (* หมายถึงการทำซ้ำของตัวอักษรก่อนหน้าได้หลายครั้งหรือไม่มีก็ได้)
  8. ค้นหาคำที่มีตัวอักษรใดก็ได้ในตำแหน่งนั้นๆ:

    โค้ด: เลือกทั้งหมด

    grep 'gr.p' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "grep", "grap", "grip" และคำอื่นๆ ที่มีตัวอักษรใดก็ได้อยู่ระหว่าง "gr" และ "p" (. ใช้เพื่อระบุอักขระใดก็ได้หนึ่งตัว)
  9. ค้นหาคำที่มีหลายๆ ตัวเลือกในตำแหน่งนั้นๆ:

    โค้ด: เลือกทั้งหมด

    grep 'gr[aeiou]p' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำว่า "grap", "grep", "grip", "grop", "grup" ([aeiou] หมายถึงตัวอักษรใดๆ ในกลุ่มนี้)
  10. ค้นหาคำที่มีชุดอักขระตรงตามที่กำหนด:

    โค้ด: เลือกทั้งหมด

    grep 'Error\{2\}' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำที่มีตัว "r" สองตัวติดต่อกัน เช่น "Errorr" (\{2\} ใช้เพื่อระบุจำนวนครั้งที่อักขระนั้นจะต้องปรากฏ)
  11. ค้นหาคำที่มีตัวอักษรใดๆ ระหว่างตัวอักษรที่กำหนด:

    โค้ด: เลือกทั้งหมด

    grep 'g.*p' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำที่เริ่มต้นด้วย "g" และสิ้นสุดด้วย "p" โดยมีอักขระใดๆ ระหว่างกลาง (.* หมายถึงอักขระใดๆ จำนวนเท่าไรก็ได้)
  12. ค้นหาคำที่มีตัวอักษรเฉพาะกลุ่ม:

    โค้ด: เลือกทั้งหมด

    grep '[A-Za-z]rip' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาคำที่ขึ้นต้นด้วยตัวอักษรตัวใดก็ได้ที่เป็นตัวอักษรภาษาอังกฤษทั้งตัวใหญ่และตัวเล็ก ตามด้วย "rip" ([A-Za-z] หมายถึงตัวอักษรภาษาอังกฤษทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก)
  13. ค้นหาบรรทัดที่มีคำใดคำหนึ่งจากหลายคำ:

    โค้ด: เลือกทั้งหมด

    grep -E 'error|warning|fail' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีคำว่า "error", "warning" หรือ "fail" (-E เปิดใช้งาน regular expressions แบบขยาย, | หมายถึง OR)
  14. ค้นหาบรรทัดที่มีคำที่ซ้ำกัน:

    โค้ด: เลือกทั้งหมด

    grep '\b\(\w\+\)\s\+\1\b' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีคำที่ซ้ำกัน เช่น "the the" หรือ "error error" (\b ระบุขอบเขตคำ, \w\+ หมายถึงคำใดๆ ที่มีอักขระมากกว่าหนึ่งตัว, \1 หมายถึงกลุ่มที่จับได้ครั้งแรก)
  15. ค้นหาบรรทัดที่ไม่มีคำที่กำหนด:

    โค้ด: เลือกทั้งหมด

    grep -v 'error' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่ไม่มีคำว่า "error" (-v ใช้เพื่อแสดงบรรทัดที่ไม่ตรงกับ pattern ที่กำหนด)
  16. ค้นหาบรรทัดที่มีคำที่อยู่ในวงเล็บ:

    โค้ด: เลือกทั้งหมด

    grep '\(.*\)' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีคำใดๆ ก็ตามที่อยู่ในวงเล็บ เช่น "(error)" (\(.*\) ระบุข้อความใดๆ ที่อยู่ในวงเล็บ)
  17. ค้นหาบรรทัดที่ขึ้นต้นด้วยคำใดคำหนึ่ง:

    โค้ด: เลือกทั้งหมด

    grep -E '^(error|warning|info)' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่ขึ้นต้นด้วย "error", "warning" หรือ "info"
  18. ค้นหาบรรทัดที่มีคำที่ตรงกับ pattern เฉพาะ:

    โค้ด: เลือกทั้งหมด

    grep '[[:digit:]]\{3\}-[[:digit:]]\{2\}-[[:digit:]]\{4\}' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหา pattern ที่ตรงกับเลขประจำตัวแบบ SSN ในรูปแบบ "123-45-6789" ([[:digit:]] ระบุตัวเลข และ \{n\} ระบุจำนวนครั้งที่อักขระต้องปรากฏ)
  19. ค้นหาบรรทัดที่มีช่องว่างก่อนและหลังข้อความ:

    โค้ด: เลือกทั้งหมด

    grep '^[[:space:]]*error[[:space:]]*$' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีคำว่า "error" ซึ่งมีช่องว่างก่อนและหลังคำ ([[:space:]] หมายถึงช่องว่างหรือ tab, ^ และ $ หมายถึงจุดเริ่มต้นและสิ้นสุดของบรรทัด)
  20. ค้นหาบรรทัดที่มีตัวอักษรที่ไม่ใช่ตัวเลขหรือตัวอักษร:

    โค้ด: เลือกทั้งหมด

    grep '[^[:alnum:]]' ชื่อไฟล์
    ตัวอย่างนี้จะค้นหาบรรทัดที่มีอักขระที่ไม่ใช่ตัวอักษรหรือตัวเลข ([^[:alnum:]] หมายถึงอักขระใดๆ ที่ไม่ใช่ตัวอักษรหรือตัวเลข)
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 7