วิธีค้นหาข้อความในไฟล์ใน Linux

How Find Text Files Linux



สำหรับผู้ดูแลระบบ การทำงานกับไฟล์ข้อความเป็นปรากฏการณ์ทั่วไป อาจจำเป็นต้องค้นหาส่วนเฉพาะจากกองไฟล์บันทึกเพื่อแก้ไขปัญหาบางอย่าง หรือต้องการค้นหาเอกสารที่มีข้อมูลสำคัญอย่างรวดเร็ว?

ในกรณีของ Linux มีหลายวิธีในการค้นหาข้อความในไฟล์ เป็นไปได้โดยใช้ทั้งเครื่องมือในตัวและแอปของบุคคลที่สาม ดูวิธีค้นหาข้อความในไฟล์ใน Linux







การค้นหาข้อความในไฟล์

ขึ้นอยู่กับจำนวนไฟล์ที่คุณต้องทำการค้นหา มีสองวิธีในการค้นหาข้อความ: อัตโนมัติหรือด้วยตนเอง หากคุณต้องทำงานกับไฟล์ข้อความสองสามไฟล์ การค้นหาด้วยตนเองจะเหมาะสมกว่า อย่างไรก็ตาม หากมีไฟล์ข้อความเป็นร้อยๆ ไฟล์ การค้นหาอัตโนมัติจะมีประสิทธิภาพมากที่สุด



สำหรับการค้นหาอัตโนมัติ เราจะใช้ grep Grep ติดตั้งมาล่วงหน้าบน Linux distro ใด ๆ สำหรับการค้นหาด้วยตนเอง โปรแกรมแก้ไขข้อความสมัยใหม่จะทำงานได้



ค้นหาข้อความในไฟล์โดยใช้ grep

ใน Linux grep เป็นเครื่องมือเริ่มต้นสำหรับการค้นหาข้อความ ชื่อได้มาจากคำสั่ง ed g/re/p ซึ่งหมายถึงการค้นหานิพจน์ทั่วไปทั่วโลกและพิมพ์บรรทัดที่ตรงกัน มีอยู่ใน distro Linux ที่ทันสมัย





Grep เป็นเครื่องมือบรรทัดคำสั่ง โครงสร้างคำสั่งมีดังต่อไปนี้

$กริป <ตัวเลือก> <Regular_expression> <file_path>

ตามชื่อของ grep รูปแบบที่จะค้นหานั้นอธิบายโดยใช้นิพจน์ทั่วไป นิพจน์ทั่วไปเป็นสตริงชนิดพิเศษที่อธิบายรูปแบบเพื่อจับคู่ ค้นหา และจัดการ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ grep และนิพจน์ทั่วไป โปรดดูที่ ใช้ grep และ egrep กับนิพจน์ทั่วไป .



สำหรับการสาธิต ให้หยิบไฟล์ข้อความตัวอย่าง ในตัวอย่างนี้ ดาวน์โหลด ไฟล์ข้อความ GNU General Public License v3.0 .

การค้นหาพื้นฐาน

วิธีพื้นฐานในการใช้ grep คือการค้นหาสตริงพื้นฐาน

ดูคำสั่ง grep ต่อไปนี้ มันจะค้นหาคำว่า GNU ในไฟล์ข้อความ

$กริป 'กนู'แอลพีจี-3.0.txt

หากต้องการแสดงหมายเลขบรรทัด ให้ใช้แฟล็ก -n

$กริป -NSGNU gpl-3.0.txt

ในการดำเนินการค้นหาแบบไม่คำนึงถึงขนาดตัวพิมพ์โดยใช้ grep ให้ใช้แฟล็ก -i

$กริป -นิgnu gpl-3.0.txt

คุณอาจไม่ต้องการเห็นการค้นหาที่ตรงกัน แต่เฉพาะชื่อไฟล์ที่ตรงกันในบางสถานการณ์เท่านั้น หากต้องการพิมพ์เฉพาะชื่อไฟล์ ให้ใช้แฟล็ก -l ในที่นี้ เครื่องหมายดอกจันหมายถึงการใช้ไฟล์ข้อความทั้งหมดในไดเร็กทอรีปัจจุบัน

$กริป -NSกนู*

นอกจากนี้เรายังสามารถไพพ์เอาต์พุตของคำสั่งอื่นไปยัง grep

$แมวแอลพีจี-3.0.txt| กริป -NSGNU

นิพจน์ทั่วไป

Regex นำเสนอวิธีที่ชาญฉลาดในการปรับแต่งการค้นหาอย่างละเอียด มีกฎเกณฑ์ของตัวเอง อย่างไรก็ตาม แอปพลิเคชันและภาษาโปรแกรมต่างๆ ใช้นิพจน์ทั่วไปต่างกัน ต่อไปนี้คือตัวอย่างสองสามตัวอย่างที่คุณสามารถใช้กับ grep ได้

หากต้องการกำหนดว่าจะพบสตริงเมื่อขึ้นต้นบรรทัด ให้ใช้สัญลักษณ์คาเร็ต (^)

$กริป -NS^ GNU gpl-3.0.txt

ในการกำหนดว่าจะพบสตริงที่ท้ายบรรทัด ให้ใช้เครื่องหมายดอลลาร์ ($)

$กริป -NSถึง$ gpl-3.0.txt

ในการอธิบายว่าอาจมีอักขระใดๆ ในตำแหน่งหนึ่งของรูปแบบ ให้ใช้อักขระจุด (.) ตัวอย่างเช่น นิพจน์ G.U จะใช้ได้หากมีอักขระใดๆ ระหว่าง G และ U

$กริป -NSGU gpl-3.0.txt

เพื่ออธิบายว่าสามารถมีชุดย่อยของอักขระในตำแหน่งเฉพาะของรูปแบบได้ ให้ใช้วงเล็บเหลี่ยม ([]) ตัวอย่างเช่น นิพจน์ t[wo]o บอกว่าการจับคู่นั้นใช้ได้สำหรับสองคนและเกินไปเท่านั้น

$กริป -NSNS[ที่ไหน]o gpl-3.0.txt

นิพจน์ทั่วไปแบบขยาย

ตามชื่อที่แนะนำ นิพจน์ทั่วไปแบบขยายสามารถทำสิ่งที่ซับซ้อนได้มากกว่านิพจน์ทั่วไปพื้นฐาน ในการใช้นิพจน์ทั่วไปแบบขยายกับ grep คุณต้องใช้แฟล็ก -E

$กริป -เกิด <Extended_regex> <ไฟล์>

หากต้องการค้นหาสตริงที่ต่างกันสองสตริง ให้ใช้ตัวดำเนินการ OR (|)

$กริป -เกิดGNU|ทั่วไป|ใบอนุญาต gpl-3.0.txt

การค้นหาข้อความในไฟล์

ตอนนี้มาถึงส่วนหลัก แทนที่จะบอกให้ grep ไฟล์ทำการค้นหาด้วยตนเอง grep สามารถทำได้โดยอัตโนมัติ ในคำสั่งต่อไปนี้ grep จะใช้ไฟล์ข้อความที่มีอยู่ทั้งหมดในไดเร็กทอรีปัจจุบันเพื่อค้นหารูปแบบ

$กริป <regex> *

หากคุณต้องการ grep เพื่อค้นหาในไดเร็กทอรีอื่น คุณต้องระบุตำแหน่ง

$กริป <regex> <directory_path>

หากมีโฟลเดอร์ grep จะไม่สำรวจตามค่าเริ่มต้น หากต้องการบอกให้ grep ค้นหาแบบเรียกซ้ำ ให้ใช้แฟล็ก -R

$กริป -nR <regex> <directory_path>

กริป GUI

หากคุณต้องการทำงานกับ GUI แต่ยังต้องการเพลิดเพลินกับฟีเจอร์ของ grep ให้ลองใช้ searchmonkey เป็นโซลูชันส่วนหน้าสำหรับ grep แพ็คเกจนี้มีอยู่ใน Linux distros หลักเกือบทั้งหมด

ค้นหาข้อความในไฟล์โดยใช้ nano

GNU Nano เป็นโปรแกรมแก้ไขข้อความที่เรียบง่ายและทรงพลังที่มาพร้อมกับ Linux distro มีคุณสมบัติในตัวเพื่อค้นหาข้อความในไฟล์ข้อความ

โปรดทราบว่าในวิธีนี้ คุณต้องเปิดไฟล์ข้อความและค้นหาด้วยตนเอง สามารถทำได้หากมีไฟล์ข้อความเพียงไม่กี่ไฟล์ให้ใช้งาน หากมีมากกว่านั้น การใช้ grep เป็นตัวเลือกที่เหมาะสมที่สุด

เปิดไฟล์ข้อความในนาโน

$นาโน <file_path>

หากต้องการค้นหาสตริงที่ตรงกัน ให้กด Ctrl + W หลังจากพิมพ์สตริงที่ต้องการค้นหาแล้ว ให้กด Enter

ค้นหาข้อความในไฟล์โดยใช้ Vim

Vim เป็นโปรแกรมแก้ไขข้อความที่เป็นที่รู้จักและมีชื่อเสียง มันเทียบเท่ากับบรรทัดคำสั่งของโปรแกรมแก้ไขข้อความสมัยใหม่ Vim มาพร้อมกับคุณสมบัติขั้นสูงมากมาย เช่น ปลั๊กอิน มาโคร การเติมข้อความอัตโนมัติ ตัวกรอง ฯลฯ

คล้ายกับนาโน Vim ทำงานกับไฟล์เดียวในแต่ละครั้ง หากคุณมีไฟล์ข้อความหลายไฟล์ การใช้ grep เป็นวิธีที่เหมาะสมที่สุด

หากต้องการค้นหาในไฟล์ข้อความ ให้เปิดไฟล์ใน Vim ก่อน

$ฉันมา <file_path>

ป้อนคำสั่ง Vim ต่อไปนี้แล้วกด Enter

$:/<คำที่ต้องการค้นหา>

ค้นหาข้อความในไฟล์โดยใช้ GNOME Text Editor

โปรแกรมแก้ไขข้อความ GNOME คือโปรแกรมแก้ไขข้อความที่มาพร้อมกับเดสก์ท็อป GNOME เป็นโปรแกรมแก้ไขข้อความที่เรียบง่ายพร้อมคุณสมบัติพื้นฐานทั้งหมดที่คุณคาดหวัง เป็นทางเลือกที่ดีสำหรับโปรแกรมแก้ไขข้อความบรรทัดคำสั่ง

เช่นเดียวกับ nano และ vim ความระมัดระวังเช่นเดียวกันกับวิธีนี้ หากไฟล์ข้อความมีจำนวนมาก คุณควรเลือกใช้ grep

เปิดไฟล์ข้อความในตัวแก้ไขข้อความ กด Ctrl + F เพื่อเปิดแถบค้นหา

ค้นหาข้อความในไฟล์โดยใช้ VS Code

Visual Studio Code เป็นโปรแกรมแก้ไขข้อความที่ทรงพลังพร้อมฟีเจอร์มากมาย ได้รับการปรับให้เหมาะสมสำหรับโปรแกรมเมอร์ที่จะใช้ราวกับว่าเป็น IDE ที่เต็มเปี่ยม มีอยู่ใน Linux distros ที่สำคัญเกือบทั้งหมด

ติดตั้งแพ็คเกจสแน็ป Visual Studio Code

$sudosnapติดตั้งรหัส--คลาสสิก

เปิดไฟล์ข้อความใน VS Code กด Ctrl + F เพื่อเริ่มค้นหา

ความคิดสุดท้าย

มีหลายวิธีในการค้นหาข้อความในไฟล์ เป็นงานง่ายที่จะเชี่ยวชาญ ขอแนะนำอย่างยิ่งให้เชี่ยวชาญคำสั่ง grep เพราะมันให้คุณค่าสูงสุดในแง่ของประสิทธิภาพและความสะดวกในการใช้งาน

หากคุณต้องการ GUI ก็มีโปรแกรมแก้ไขข้อความให้เลือกมากมาย โปรแกรมแก้ไขข้อความสมัยใหม่จะมีตัวเลือกการค้นหาข้อความ

มีความสุขในการคำนวณ!