อาร์กิวเมนต์สตริงหลายคำสั่ง findstr DOS


21
findstr /v "black"  File1.txt

ด้านบนคำสั่ง DOS จะแสดงเนื้อหาของ 'File1.txt' ซึ่งไม่ตรงกับสตริง "ดำ"

จะแก้ไขคำสั่งนี้ได้อย่างไรหากฉันต้องการกรองคำว่า "ดำ" และ "ขาว"


2
findstrเครื่องมือที่ไม่ได้เป็นส่วนหนึ่งของ MS-DOS มันมาพร้อมกับ Windows (XP +?) ฉันคิดว่าคุณหมายถึง 'เครื่องมือบรรทัดคำสั่ง' แทน 'คำสั่ง DOS'
Michel de Ruiter

คำตอบ:


30

ฉันจะกรองคำว่า "ดำ" และ "ขาว" ได้อย่างไร

คำสั่งต่อไปนี้จะแสดงทุกบรรทัดที่มี"black" NOR "white" :

findstr /v "black white" blackwhite.txt

คำสั่งต่อไปนี้จะแสดงบรรทัดทั้งหมดที่มี"black" OR "white" :

findstr "black white" blackwhite.txt

คำสั่งต่อไปนี้จะแสดงทุกบรรทัดที่มีคำว่า EXACTLY "black white ":

findstr /c:"black white" blackwhite.txt

คำสั่งต่อไปนี้จะแสดงบรรทัดทั้งหมดที่มี"black" และ "white" :

findstr "white" blackwhite.txt | findstr "black"

หมายเหตุ:

  • เมื่อสตริงการค้นหามีหลายคำคั่นด้วยช่องว่างแล้วfindstrจะส่งคืนบรรทัดที่มีทั้งคำ (OR)

  • การค้นหาตามตัวอักษร ( /C:string) จะกลับพฤติกรรมนี้และอนุญาตให้ค้นหาวลีหรือประโยค การค้นหาตามตัวอักษรยังอนุญาตให้ค้นหาอักขระเครื่องหมายวรรคตอน

ไฟล์ข้อมูลตัวอย่าง (blackwhite.txt):

red
black
white
blue
black white
black and white

ตัวอย่างผลลัพธ์:

F:\test>findstr /v "black white" blackwhite.txt

red
blue

F:\test>findstr "black white" blackwhite.txt
black
white
black white
black and white

F:\test>findstr /c:"black white" blackwhite.txt
black white

F:\test>findstr "white" blackwhite.txt | findstr "black"
black white
black and white

อ่านเพิ่มเติม


1
น่าสนใจมาก .. ฉันคิดว่าสิ่งนี้จะค้นหาขาวและดำfindstr "white" File2.txt | findstr "black"
barlop

ดีเนื่องจากเรามี NOR ดังนั้นยังมีการเปลี่ยนแปลงที่เราสามารถพิจารณาได้ว่าหายไป NAND อีกสิ่งหนึ่งที่เราควรพิจารณาว่าขาดหายไปคือ XOR
barlop

@barlop ฉันไม่สามารถหาวิธีที่จะทำ NAND หรือ XOR: / ฉันรู้ว่าสิ่งที่ควรจะออกแต่วิธีการที่จะมี ...
DavidPostill

อาจไม่มีวิธีที่รวดเร็วดีมันอาจเป็นไฟล์ชุดตรวจสอบ errorlevel น่าจะดีกว่าถ้าใช้เครื่องมืออื่นถ้าทำอย่างนั้นดูเหมือนว่า grep ไม่สามารถทำได้ แต่ awk สามารถทำค่อนข้างน้อยหรือแน่นอน perl unix.stackexchange.com/questions/177513/ …
barlop

ขอให้เรายังคงอภิปรายนี้ในการแชท
barlop

0

หากคุณต้องการแสดงทุกบรรทัดด้วยคำว่า "ดำ" หรือ "ขาว" แล้วกำจัด / v ในคำสั่งของคุณ

ลอง: findstr white File1.txt หรือ findstr black File1.txt หรือ findstr "black white" File1.txt

ตัวถูกดำเนินการ / V จะพิมพ์ทุกบรรทัดที่ไม่มีสตริงการค้นหาของคุณ

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

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