Linux Shell : การใช้คำสั่ง grep เพื่อค้นหาคำในไฟล์
  • เว็บบอร์ด
  • เข้าสู่ระบบ
  • สมัครสมาชิก




หน้า: [1]   ลงล่าง
ผู้เขียน หัวข้อ: Linux Shell : การใช้คำสั่ง grep เพื่อค้นหาคำในไฟล์  (อ่าน 2230 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Putter™
Stay Hungry, Stay Foolish
Administrator
*

Member ID : 1

เพศ: ชาย
Thanks! : 14176 กระทู้: 6859
แนะนำเพื่อน 153
แนะนำเพื่อนให้สมัครสมาชิก : 56
Level and Hp mod by the DtTvB :: version 1.02 :: Made for Zone-IT.com Level 67 : Exp 46%
HP: 50.5%

ออฟไลน์
  • :3 ชั่วโมงที่แล้ว

  • Putter@Ruk-Com.In.Th

    rukcom
    เว็บไซต์
    |
    « เมื่อ: 19 มกราคม 2012 | 04:51:55 PM »

    Permalink: Linux Shell : การใช้คำสั่ง grep เพื่อค้นหาคำในไฟล์

    วิธีการทำงานของคำสั่ง grep คือจะอ่านไฟล์ที่เราต้องการค้นหาทีละบรรทัด แล้วดูว่าตรง (match) กับคำหรือรูปแบบที่เราต้องการค้นหาหรือไม่ ซึ่งผลลัพธ์โดยดีฟอลต์ที่ได้จากการรันคำสั่ง จะแสดงผลลัพธ์เป็นบรรทัดต่างๆ ที่ตรงกับคำหรือรูปแบบนั้นๆ


    วิธีการใช้คำสั่ง

    $ grep [OPTION] [FILE]
    เราจะทดลองใช้คำสั่ง grep กับไฟล์ /etc/passwd เพื่อหาข้อมูลที่ต้องการ โดยไฟล์ /etc/passwd นี้จะมีรูปแบบการเก็บแยกเป็นบรรทัดอยู่แล้ว

    ตัวอย่างไฟล์ /etc/passwd

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    ...
    เริ่มต้นการใช้คำสั่ง grep
    เริ่มต้นสมมติว่าเราต้องการหาคำว่า root ในไฟล์ /etc/passwd ว่ามีอยู่ในบรรทัดใดบ้าง สามารถทำได้ดังนี้

    $ grep root /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    ผลลัพธ์ที่ได้จะแสดงบรรทัดที่มีคำว่า root อยู่ด้วย

    แสดงเลขบรรทัด (-n)
    สามารถแสดงเลขบรรทัดในผลลัพธ์โดยการใส่ option -n ในคำสั่ง grep

    $ grep -n root /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    12:operator:x:11:0:operator:/root:/sbin/nologin
    ผลลัพธ์จะมีเลขที่บรรทัดกำกับมาด้วย ในที่นี้ คือ 1 และ 12 ก็คือบรรทัดที่ 1 และ 12 นั่นเอง

    ไม่แสดงบรรทัดที่มีคำที่ต้องการ (-v)
    เช่นเราไม่ต้องการบรรทัดที่มีคำว่า root ก็สามารถทำได้โดยเพิ่ม option -v ลงไป

    $ grep -v root /etc/passwd
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    ...
    ผลลัพธ์ที่ได้จะแสดงบรรทัดอื่นๆ ที่ไม่มีคำว่า root

    ระบุรูปแบบในการค้นหา (-E)
    ในคำสั่ง grep เราสามารถระบุรูปแบบ (pattern) ในการค้นหาได้หลายแบบ แบบที่นิยมกันอย่างหนึ่งคือใช้ REGULAR EXPRESSION ในที่นี้ต้องใส่ option -E โดยสามารถใช้ REGULAR EXPRESSION เช่นเดียวกับเวลาเราใช้ในการเขียนโปรแกรมภาษาต่างๆ

    ตัวอย่างเช่นหาบรรทัดที่ขึ้นต้นด้วยตัวอักษร s

    $ grep -E ^s /etc/passwd
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
    smolt:x:497:493:Smolt:/usr/share/smolt:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    squid:x:23:23::/var/spool/squid:/sbin/nologin
    จากตัวอย่างเราใช้เคื่องหมาย ^ เพื่อระบุว่าตัวอักษรที่ตามมานั้นเป็นตัวอักษรเริ่มต้นของบรรทัด

    ค้นหาจากหลายๆ ไฟล์
    บางครั้งมีหลายไฟล์ที่เราต้องการค้นหานั้น ก็สามารถทำได้โดยระบุชื่อไฟล์เป็น * ได้

    เช่นค้นหาคำว่า root จากทุกไฟล์ใน /etc/

    $ grep root /etc/*
    /etc/aliases:postmaster:     root
    /etc/aliases:bin:            root
    ...
    /etc/group:root:x:0:root
    /etc/group:bin:x:1:root,bin,daemon
    /etc/group:daemon:x:2:root,bin,daemon
    ...
    /etc/passwd:root:x:0:0:root:/root:/bin/bash
    /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
    /etc/passwd-:root:x:0:0:root:/root:/bin/bash
    ...
    /etc/rc.sysinit:             if [ "$owner" != root ]; then
    /etc/rc.sysinit:if [ -f /etc/sysconfig/readonly-root ]; then
    /etc/rc.sysinit:     . /etc/sysconfig/readonly-root
    ..
    ผลลัพธ์ที่ได้จะแสดงชื่อไฟล์นำหน้าบรรทัดที่มีคำว่า root

    ถ้าต้องการค้นหาภายใต้ sub-directory ย่อยๆ ลงไปด้วย ให้เพิ่ม option -r หลังคำสั่ง grep

    ที่มา : http://spalinux.com/2008/08/using_grep_find_pattern_in_file
      บันทึกการเข้า
    

    เจอใครเข้าข่าย Spam ผมลบ ID ทิ้งหมดนะครับและแน่นอนว่า กระทู้ที่ตั้ง เป็นร้อย เป็นพัน ก็จะถูกลบตามไปด้วย

    หน้า: [1]   ขึ้นบน
    พิมพ์
    กระโดดไป:  

    * แบ่งปันหัวข้อนี้...
    ในฟอรั่ม
    (BBCode)
    ในเว็บไซด์/blog
    (HTML)

    Powered by | SMF © 2006-2008, Simple Machines LLC | Thai language by ThaiSMF | Sitemap
    Copyright (c) 2006-2010 Ruk-Com.In.Th
    เนื่องจากผมได้ทำไฟล Textlink หาย์ท่านใดที่แลก link กับผมไว้ให้ส่งรายละเอียดมาให้ผมอีกครั้งทาง PM ด้วยครับ ขอบคุณครับ Putter

    | แทงบอลออนไลน์ | sbobet | sbobet | sbobet | sbobet | ibcbet | ibcbet | ibcbet | คาสิโนออนไลน์ | คาสิโนออนไลน์ | คาสิโนออนไลน์ | sbobet | sbobet | ปิงปอง | รูปพริตตี้ | รถมอเตอร์ไซต | Submit | IPhone | ไอปายอินไทย | Special Price | Today Deals | Best Sellers 2011 | Best Sellers Festival

    X-Close




    X-Close