สำหรับมือใหม่ เครื่องมือค้นหารูปแบบอย่าง findstr อาจดูไร้ประโยชน์ แต่เมื่อต้องจัดการกับไฟล์ log ที่ระบบสร้างขึ้น หรือเอาต์พุตบรรทัดคำสั่งที่มีหลายร้อยบรรทัด findstr คือเครื่องมือที่คุณต้องการ
ผู้ใช้ระบบปฏิบัติการ Linux คุ้นเคยกับความสามารถอัศจรรายของคำสั่ง Grep และ findstr ทำหน้าที่คล้ายกันใน Microsoft Windows คุณสามารถรวมกับคำสั่งอื่นๆ โดยใช้ pipes หรือรันโดยตรงเพื่อแยกวิเคราะห์ไฟล์ข้อความหลายไฟล์ มาดูว่า findstr ทำงานอย่างไรพร้อมตัวอย่าง
การใช้คำสั่ง Findstr
ไวยากรณ์พื้นฐานง่ายๆ - findstr <string> <filepath> โดยที่ <string> คือรูปแบบที่ต้องการค้นหา และ <filepath> คือที่อยู่ของไฟล์ที่ต้องการค้นหา เปิด Command Prompt และลองดู
findstr SFC example1.txt
คำสั่งนี้จะค้นหาและแสดงบรรทัดทั้งหมดที่มีสตริงค้นหา SFC โปรดทราบว่าโดยค่าเริ่มต้น findstr แยกตัวพิมพ์เล็กใหญ่ ดังนั้นการกล่าวถึง sfc จะไม่ตรงกัน
พารามิเตอร์
คุณสามารถปรับแต่งการทำงานของ findstr เพิ่มเติมได้โดยรวมพารามิเตอร์ที่เป็นตัวเลือก สวิตช์อย่าง /B หรือ /I จะปรับเปลี่ยนพฤติกรรมของ findstr โดยกำหนดเงื่อนไขเพิ่มเติมให้กับการค้นหา ตัวอย่างเช่น:
findstr /I SFC example1.txt
การรวม /I เป็นพารามิเตอร์ทำให้การค้นหาไม่แยกตัวพิมพ์เล็กใหญ่ อนุญาตให้การกล่าวถึงคำศัพท์ตรงกันทั้งหมด ไม่ว่าจะเป็นการใช้ตัวพิมพ์อย่างไร คุณสามารถหารายการพารามิเตอร์ทั้งหมดของ findstr ได้ในเอกสาร Microsoft อย่างเป็นทางการ
รูปแบบตัวเลือก
พารามิเตอร์ไม่ใช่วิธีเดียวที่คุณสามารถปรับแต่ง findstr การล้อมรอบ <string> ด้วยเครื่องหมายคำพูด เช่น ทำให้คุณระบุรูปแบบหลายรูปแบบได้ ให้ผลลัพธ์ตรงหากพบสตริงข้อความใดๆ
findstr "SFC DISM" example1.txt
ข้างต้นจะส่งคืนบรรทัดที่ตรงกันที่มีเฉพาะคำศัพท์ใดคำศัพท์หนึ่ง ทำให้มีประโยชน์เมื่อค้นหาการกล่าวถึงรายการที่มีชื่อต่างกัน
Regular Expressions
Findstr สามารถค้นหาผ่านหลายไฟล์ได้ การเปลี่ยน <filepath> เป็น regular expression ทำให้คำสั่งค้นหารูปแบบที่ระบุในไฟล์ทั้งหมดที่ตรงกัน
findstr SFC *.txt
การใช้ตัวอักขระแวลด์การ์ดจับคู่ regex กับไฟล์ข้อความทั้งหมดในไดเรกทอรี่ปัจจุบันและไดเรกทอรี่ย่อย ผลลัพธ์ก็จะแยกตามชื่อไฟล์ ทำให้คุณเห็นว่าบรรทัดไหนมาจากไฟล์ไหน
Pipes
เหมือนคำสั่ง cmd ส่วนใหญ่ findstr ยังสามารถใช้กับเอาต์พุตของคำสั่งอื่นๆ ได้ เพียงเพิ่ม pipe หลังจบคำสั่งเป้าหมายและเรียก findstr โดยไม่ต้องมี <filepath>
dir | findstr .txt
สิ่งนี้รันการค้นหา findstr บนเอาต์พุตของคำสั่ง dir ส่งคืนรายการไฟล์ที่ลงท้ายด้วย .txt อย่างไรก็ตาม ตัวอย่างนี้ไร้ประโยชน์ในทางปฏิบัติ เนื่องจาก dir สามารถค้นหาไฟล์ประเภทเดียวกันได้แล้วด้วย regular expression
คนอาจเลือกเส้นทางที่ยาวกว่าการ redirect เอาต์พุตไปยังไฟล์ข้อความแล้วใช้ findstr บนไฟล์ข้อความ แต่การตัดกลางออกง่ายกว่า
การประยุกต์ใช้ Findstr ใน Windows
การใช้งานที่ชัดเจนของ findstr แสดงออกมาจากไวยากรณ์เพียงอย่างเดียว คุณสามารถค้นหาไฟล์ข้อความที่มีสตริงเฉพาะ หรือดูว่าสตริงเฉพาะอยู่ในไฟล์หรือไม่
สิ่งนี้ แม้มีประโยชน์ทางทฤษฎี แต่ نادرๆ ที่เห็นการใช้งานนอกเหนือจากกรณีพิเศษ ในยุคของบริการคลาวด์อย่าง Google Docs คนส่วนใหญ่ไม่มีไฟล์ข้อความเยอะแล้ว
การประยุกต์ใช้จริงของ findstr ลึกซึ้งกว่านั้นและเกี่ยวข้องกับผลลัพธ์ที่ทรงพลังมากขึ้น นี่คือตัวอย่างที่น่าสนใจบางส่วน
การค้นหาไฟล์ประเภทเฉพาะ
คำสั่ง dir รวมตัวเลือกในการค้นหาชื่อไฟล์โดยใช้ regular expressions แล้ว แต่กับ findstr คุณสามารถค้นหาไฟล์ที่มีแอตทริบิวต์อื่นๆ เหมือนกันได้ เช่น เวลาหรือวันที่สร้าง
สมมติว่าเกิดข้อผิดพลาดขึ้นเวลา 06:43 PM และคุณต้องการค้นหาไฟล์ log ทั้งหมดที่สร้างขึ้นในเวลานั้น ด้วยคำสั่ง dir เพียงอย่างเดียว คุณจะต้องคัดแยกผลลัพธ์ด้วยตนเองหรือดึงไฟล์ log ทั้งหมดมาเปรียบเทียบ การใช้ findstr ทำให้กลายเป็นคำสั่งง่ายๆ
dir | findstr 06:43
คุณสามารถลองเทคนิคเดียวกันเพื่อหาไฟล์ที่สร้างในวันที่เฉพาะ หรือได้รายการไดเรกทอรี
dir | findstr DIR
การกรองข้อมูลเครือข่ายด้วย Netstat
Netstat เป็นคำสั่ง Windows ที่มีประโยชน์ซึ่งให้ข้อมูลทั้งหมดเกี่ยวกับการเชื่อมต่อเครือข่ายของคอมพิวเตอร์ - ข้อมูลมากเกินไป ซึ่งเป็นที่ที่ findstr เข้ามาช่วย
การ pipe เอาต์พุตของ netstat เข้า findstr ให้คุณค้นหาการเชื่อมต่อที่มีคุณสมบัติเฉพาะ ตัวอย่างเช่น นี่คือวิธีที่คุณจะได้รายการการเชื่อมต่อที่ established ทั้งหมด
netstat | findstr ESTABLISHED
เทคนิคนี้มีประโยชน์เมื่อวินิจฉัยปัญหาเครือข่าย คุณแม้แต่สามารถใช้ findstr กับ PID ของแอปพลิเคชันเพื่อหาการเชื่อมต่อทั้งหมดที่ถูกเปิดโดยกระบวนการเฉพาะ
netstat -o | findstr 13120
การรับที่อยู่ IP เฉพาะ
คำสั่ง ipconfig ให้คุณดูรายละเอียดของอินเทอร์เฟซเครือข่ายทั้งหมดของระบบ รวมถึงที่อยู่ IP คุณสามารถใช้ findstr เพื่อดึงเฉพาะประเภทที่อยู่ IP ได้โดยไม่ต้องเลื่อนผ่านทั้งหมด
ipconfig | findstr Temporary
คุณสามารถขยายวิธีนี้เพื่อรับข้อมูลใดๆ จาก ipconfig ตั้งแต่ subnet masks ไปจนถึง gateway addresses
การวิเคราะห์ไฟล์สคริปต์
ไม่ว่าคุณจะเขียนโค้ดด้วยภาษาโปรแกรมใด ไฟล์สคริปต์ในที่สุดก็เป็นเพียงข้อความ ซึ่งหมายความว่าคุณสามารถใช้ findstr เพื่อวิเคราะห์สคริปต์และดึงส่วนเฉพาะได้โดยไม่ต้องค้นหาผ่านโค้ดทั้งหมด
สมมติว่าเราอยากดูว่า if statement ถูกใช้อย่างไรในสคริปต์เฉพาะ เราสามารถใช้คำสั่งต่อไปนี้:
findstr if script.ahk
ไม่เพียงแค่จะแสดงบรรทัดที่ใช้ if statement แต่ยังแสดงนิพจน์ที่ใช้ด้วย คุณยังสามารถรวมพารามิเตอร์ /N เพื่อแสดงหมายเลขบรรทัด ซึ่งมีประโยชน์มากสำหรับไฟล์สคริปต์
findstr /N if script.ahk
FindStr คุ้มค่าที่จะใช้หรือไม่?
ความยากหลักในการนำทางอินเทอร์เฟซบรรทัดคำสั่งคือปริมาณข้อความที่ต้องคัดแยก Findstr เป็นเครื่องมือสำคัญสำหรับการดึงข้อมูลที่มีประโยชน์และกรองขยะออก
เนื่องจากคำสั่งเทอร์มินัลทั้งหมดให้เอาต์พุตเป็นข้อความ findstr จึงสามารถใช้ค้นหาข้อมูลที่เกี่ยวข้องได้ตลอดเวลา ตั้งแต่การแก้ไขปัญหาเครือข่ายไปจนถึงการหาไฟล์ที่ถูกต้อง ทุกการกระทำมีประสิทธิภาพมากขึ้นกับ findstr
แม้นอกเหนือจากความสามารถร่วมกับคำสั่งอื่นๆ findstr ก็ยังมีประโยชน์สำหรับความสามารถในการเดินทางผ่านเนื้อหาของไฟล์ข้อความ คุณสามารถหาข้อผิดพลาดเฉพาะในไฟล์ log ที่เครื่องสร้าง หรือดึงส่วนของโค้ดในสคริปต์ที่ซับซ้อน
สรุปคือ findstr เป็นเครื่องมือที่จำเป็นในอาร์เซนอลของผู้ใช้ Windows ระดับสูง โดยเฉพาะคนที่ตั้งใจจะคุ้นเคยกับอินเทอร์เฟซบรรทัดคำสั่ง