การคืนค่าชุดย่อยของสตริงย่อยที่ตรงกันในแบทช์


3

ฉันต้องการคืนหมายเลขบรรทัดในไฟล์ที่มีคำนำหน้าเหมือนกัน แต่ส่วนที่เหลืออาจแตกต่างกันไป

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

ตัวอย่างของบรรทัดที่ฉันค้นหาคือ:

</TR></TABLE><TABLE cellspacing... รหัสเพิ่มเติมที่อาจแตกต่างกันไป

บรรทัดในไฟล์คือผลลัพธ์ของตัวสร้างดังนั้นฉันไม่แน่ใจว่ามีการเปลี่ยนแปลงหรืออาจเปลี่ยนแปลงทุกครั้งที่สร้างไฟล์

คำตอบ:


1

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

เนื่องจากสตริงการค้นหาของคุณมีช่องว่างคุณต้องใช้/C:"search string"ตัวเลือกมิฉะนั้นสตริงการค้นหาจะถูกตีความว่าเป็นคำค้นหาหลายคำคั่นด้วยช่องว่าง

คุณต้องการให้การค้นหาตรงกับจุดเริ่มต้นของบรรทัดเท่านั้นดังนั้นคุณต้องมี/Bตัวเลือก หรือคุณสามารถเพิ่ม/Rตัวเลือกเพื่อให้การค้นหาเป็นนิพจน์ทั่วไปจากนั้นใช้^จุดเริ่มต้นของบรรทัดที่จุดเริ่มต้นของสตริงการค้นหา

findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"

คุณขอเฉพาะหมายเลขบรรทัดโดยไม่มีข้อความของบรรทัดที่ตรงกัน คุณสามารถใช้ FOR / F เพื่อแยกหมายเลขบรรทัดที่ต้องการ

for /f "delims=:" %A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do @echo %A

หากคุณใส่คำสั่งในไฟล์แบตช์คุณต้องเพิ่มค่าเป็นสองเท่า:

@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A

0

ใช้findstr /N strings filenameในการค้นหาอินสแตนซ์ในแฟ้มstringsfilename

หมายเหตุ: /N"พิมพ์หมายเลขบรรทัดก่อนแต่ละบรรทัดที่ตรงกัน"

สำหรับข้อมูลการใช้งานเพิ่มเติมให้เรียกใช้ findstr /?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.