มียูทิลิตีที่คล้ายกันให้grep
ใช้งานได้จากพรอมต์คำสั่งของ Windows หรือมีเครื่องมือของบุคคลที่สามหรือไม่
มียูทิลิตีที่คล้ายกันให้grep
ใช้งานได้จากพรอมต์คำสั่งของ Windows หรือมีเครื่องมือของบุคคลที่สามหรือไม่
คำตอบ:
มีเครื่องมือบรรทัดคำสั่งที่เรียกFINDSTR
ว่ามาพร้อมกับระบบปฏิบัติการ Windows NT ทุกระดับ (พิมพ์FINDSTR /?
ลงในหน้าต่างพร้อมรับคำสั่งสำหรับข้อมูลเพิ่มเติม) ไม่รองรับทุกอย่างgrep
แต่อาจเพียงพอสำหรับความต้องการของคุณ
netstat -n | FINDSTR 3389
PowerShell (รวมอยู่ในมาตรฐานบน Windows 7 / 2008R2, เป็นทางเลือกสำหรับ XP / 2003 / Vista / 2008) ซึ่งรวมถึงselect-string
cmdlet สำหรับจุดประสงค์นี้
Grep สำหรับ Windows โดย GnuWin Project (2014-10-02: ล้าสมัย, ดูความคิดเห็นด้านล่าง)
ตามที่กล่าวไว้ findstr ทำงานได้ดี ตัวอย่าง:
C:> dir | findstr Windows
11/06/2013 09:55 PM Windows
greg Cygwinและอื่น ๆ ;)
ฉันยังพบอีกวิธีหนึ่งในการใช้ GREP เช่นฟังก์ชันการทำงานใน Windows 7 ขึ้นไปโดยไม่ต้องมีแอปพลิเคชันพิเศษใด ๆ ในการติดตั้งและบนระบบเก่าที่คุณสามารถใช้ติดตั้ง Powershell
ในPowershellผู้ใช้สามารถใช้Where-Objectมันมีชุดคุณสมบัติที่ครอบคลุมที่ให้การทำงานทั้งหมดของ GREP และอื่น ๆ อีกมากมาย
หวังว่ามันจะช่วย
ฉันประหลาดใจที่ไม่มีใครได้กล่าวถึงfindstr ฉันไม่ใช่ greuser poweruser แต่ findstr ทำสิ่งที่ฉันต้องการกรองไฟล์และ stdin ด้วยการสนับสนุน regex ดั้งเดิม จัดส่งกับ Windows และทุกสิ่ง (แก้ไข: มีคนพูดถึง findstr, มันก็สายไปแล้ว)
GnuWin32มีมูลค่าการกล่าวขวัญมีรุ่น Win32 ดั้งเดิมของเครื่องมือ linux มาตรฐานทั้งหมดรวมถึง grep, file, sed, groff, เยื้องและอื่น ๆ
และมีการปรับปรุงอย่างต่อเนื่องเมื่อมีการเปิดตัวเครื่องมือเหล่านี้เวอร์ชันใหม่
ใน Windows ฉันใช้Far Managerเพื่อค้นหาไฟล์ BSD ได้รับใบอนุญาตทำงานในคอนโซลช่วยประหยัดเวลาในการพิมพ์พารามิเตอร์ cmdline นี่คือกล่องโต้ตอบการค้นหาที่เรียกใช้โดย Alt-F7
อัปเดต: สิ่งนี้ไม่เป็นจริงเมื่อคำถามถูกถามมา แต่ตอนนี้ Microsoft อนุญาตให้หนึ่งติดตั้งระบบย่อย Windows สำหรับ Linuxและ Windows จะเรียกใช้ grep ใน PowerShell ให้เรียกใช้:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
UnxUtilsเป็นชุดของ Unix utilites ที่ทำงานบน Windows มันมี grep, sed, gawk และอื่น ๆ
ยูทิลิตี้ค้นหาไฟล์ที่ยอดเยี่ยมและรวดเร็วมากAgent Ransackรองรับการค้นหานิพจน์ทั่วไป ส่วนใหญ่เป็นยูทิลิตี้ GUI แต่มีอินเตอร์เฟสบรรทัดคำสั่งให้ใช้ด้วย
ในหน้าต่าง reskit มีโปรแกรมอรรถประโยชน์ที่เรียกว่า "qgrep" คุณอาจมีไว้ในกล่องของคุณแล้ว ;-) นอกจากนี้ยังมาพร้อมกับคำสั่ง "tail" ขอบคุณพระเจ้า!
แม้ว่าจะไม่ใช่ grep หรือบรรทัดคำสั่งทางเทคนิคทั้ง Microsoft Visual Studio และNotepad ++มีฟีเจอร์ Find in Files ที่ดีมากพร้อมการรองรับการแสดงออกปกติ ฉันพบว่าตัวเองใช้บ่อยๆแม้ว่าฉันจะมี grep รุ่น CygWin อยู่ในบรรทัดคำสั่ง
ฉันจะเพิ่ม $ 0.02 ของฉันไปที่กระทู้นี้ dnGREPเป็นเครื่องมือ grep โอเพ่นซอร์สที่ยอดเยี่ยมสำหรับ windows ที่รองรับการเลิกทำการรวมการทำงานของ windows explorer ค้นหาภายใน PDF, รหัสไปรษณีย์, DOCs และอื่น ๆ ...
ใช่มีเพียงโปรแกรมเดียวสำหรับ Windows PC ที่มี GUI ที่เป็นของแข็งและเป็นประโยชน์อย่างยิ่งสำหรับฉัน ฉันทำงานเป็นนักพัฒนาและบนคอมพิวเตอร์ทุกเครื่องที่ฉันมีสิ่งแรกที่ติดตั้งโปรแกรม XFind มันถูกสร้างขึ้นในปี 1997 และจนถึงขณะนี้เวอร์ชั่น 1.0 และจนถึงขณะนี้ใช้งานได้และดีที่สุด บ่อยครั้งที่ฉันต้องการค้นหาสตริงใน " .cs", " .aspx", " .sct" (ไฟล์รหัสรูปแบบ FoxPro Visual) หรือเพียงแค่ " . *" และ XFind สแกนไฟล์ทั้งหมดและแสดงไฟล์และสิ่งที่ยอดเยี่ยมอีกอย่างคือ ที่คุณสามารถดูที่สตริงอยู่ในไฟล์ XFind มีเครื่องมือแก้ไขบางชนิดเช่นกัน ถ้ามันเป็นไฟล์ไบนารีมันจะแสดงให้คุณค้นพบสตริง ลองใช้และใช้มันตลอดไปหากคุณเป็นนักพัฒนาอย่างฉัน
เห็นได้ชัดว่าคุณได้รับคำแนะนำที่แตกต่างกันมากมาย
ตัวเลือกส่วนตัวของฉันสำหรับยูทิลิตี้พรรคอิสระฟรีคือ: Agent Ransack
ดาวน์โหลด Agent Ransack
แม้จะมีชื่อที่ค่อนข้างสับสน แต่ก็ใช้งานได้ดีและสามารถใช้ในการค้นหาไฟล์ได้หลายวิธี
โชคดี
busybox แบบ all-in-one ประกอบด้วย grep / egrep / sed / awk และอีกมากมาย
รับจาก:
อัปเดต: ไม่มีแล้ว - หรือเก่ากว่า
หากคุณไม่สนใจผลิตภัณฑ์ที่ต้องชำระเงิน PowerGREP เป็นรายการโปรดส่วนตัวของฉัน
เมื่อเร็ว ๆ นี้เราได้ใช้PowerGREPสำหรับการดำเนินการเป็นกลุ่มขั้นสูงสำหรับไฟล์หลายพันไฟล์ รวมถึงการค้นหา regex ในเนื้อหาของไฟล์ PDF และการแก้ไขเอกสาร PDF ในขนาดใหญ่
มันคุ้มค่าเงินถ้าคุณต้องการประหยัดเวลาจากแรงงานมานูเอล คุณสามารถลองก่อนที่จะซื้อฉันคิดว่า
หากคุณต้องใช้ Windows เปล่าจากนั้นนอกเหนือจากตัวเลือก Powershell ที่กล่าวถึงข้างต้นคุณสามารถใช้ VBScript ซึ่งรองรับ RegEx ได้ดี
MS มีพื้นที่การเขียนสคริปต์ที่ดีใน Technet พร้อมด้วยตัวอย่างมากมายสำหรับผู้ดูแลระบบ
เพียงลองใช้โปรแกรมอรรถประโยชน์ LikeGrep java อาจช่วยคุณได้ในหลายกรณี ตามที่คุณต้องการมันยังสามารถแทนที่ข้อความบางส่วนที่พบในไฟล์ รับประกันการทำงานกับไฟล์ขนาดใหญ่ (ทดสอบมากถึง 8 Gb)
เป็นเวลานานแล้วที่ฉันใช้มัน แต่ Borland (ตอนนี้ Embarcadero) รวมบรรทัดคำสั่ง grep กับคอมไพเลอร์ C / C ++ ในบางครั้งพวกเขาได้เปิดให้ดาวน์โหลดเวอร์ชั่น 5.5 ได้ฟรีหลังจากลงทะเบียน
ฉันแนะนำPowerGrep
ฉันต้องทำโครงการ e ค้นพบเมื่อหลายปีก่อน ฉันพบว่าfisdstr
มีข้อ จำกัด บางอย่างโดยเฉพาะอย่างยิ่งผู้ที่จะล้มเหลวในที่สุด
สคริปต์ต้องค้นหาไฟล์หลายพันไฟล์โดยใช้คำค้นหา / วลีสองสามโหล
grep ของ Cygwin ทำงานได้ดีขึ้นมากมันไม่ได้ทำให้หายใจไม่ออกบ่อยนัก แต่ในที่สุดฉันก็ไปที่ PowerGrep เพราะส่วนต่อประสานกราฟิกทำให้ง่ายต่อการบอกเวลาและสถานที่ที่ผิดพลาดและมันง่ายมากที่จะแก้ไขในเงื่อนไขและผลลัพธ์ทั้งหมดที่ ฉันต้องการ. ในที่สุดPowerGrep เป็นคนที่เชื่อถือได้มากที่สุดในสามคน
ฉันรู้ว่ามันเป็นหัวข้อที่ค่อนข้างเก่า แต่นี่เป็นอีกสิ่งที่คุณสามารถทำได้ ฉันทำงานกับนักพัฒนา VM โดยไม่มีการเข้าถึงอินเทอร์เน็ตและมีพื้นที่ว่างในดิสก์ค่อนข้าง จำกัด ดังนั้นฉันจึงใช้จาวาที่ติดตั้งไว้
คอมไพล์โปรแกรม java ขนาดเล็กที่พิมพ์การจับคู่ regex กับคอนโซล วางขวดไว้ที่ใดที่หนึ่งในระบบของคุณสร้างแบตช์เพื่อดำเนินการและเพิ่มโฟลเดอร์ในตัวแปร PATH ของคุณ:
JGrep.java:
package com.jgrep;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JGrep {
public static void main(String[] args) throws FileNotFoundException, IOException {
int printGroup = -1;
if (args.length < 2) {
System.out.println("Invalid arguments. Usage:");
System.out.println("jgrep [...-MODIFIERS] [PATTERN] [FILENAME]");
System.out.println("Available modifiers:");
System.out.println(" -printGroup - will print the given group only instead of the whole match. Eg: -printGroup=1");
System.out.println("Current arguments:");
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
return;
}
Pattern pattern = null;
String filename = args[args.length - 1];
String patternArg = args[args.length - 2];
pattern = Pattern.compile(patternArg);
int argCount = 2;
while (args.length - argCount - 1 >= 0) {
String arg = args[args.length - argCount - 1];
argCount++;
if (arg.startsWith("-printGroup=")) {
printGroup = Integer.parseInt(arg.substring("-printGroup=".length()));
}
}
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
}
Matcher matcher = pattern.matcher(sb.toString());
int matchesCount = 0;
while (matcher.find()) {
if (printGroup > 0) {
System.out.println(matcher.group(printGroup));
} else {
System.out.println(matcher.group());
}
matchesCount++;
}
System.out.println("----------------------------------------");
System.out.println("File: " + filename);
System.out.println("Pattern: " + pattern.pattern());
System.out.println("PrintGroup: " + printGroup);
System.out.println("Matches: " + matchesCount);
}
}
c: \ jgrep \ jgrep.bat (พร้อมกับ jgrep.jar):
@echo off
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %*
และเพิ่มc: \ jgrepในตอนท้ายของตัวแปรสภาพแวดล้อม PATH
ตอนนี้เพียงโทรjgrep "expression" file.txt
จากที่ใดก็ได้
jgrep -printGroup=1 "expression" file.txt
ฉันต้องการที่จะพิมพ์เฉพาะกลุ่มจากการแสดงออกของฉันดังนั้นฉันเพิ่มปรับปรุงและเรียกมันเหมือน
ฉันรู้ว่ามันเป็นคำถามเก่า แต่ฉันเจอโพสต์นี้เพื่อหาคำตอบ และฉันได้พบสิ่งหนึ่งดังนั้นเพิ่มที่นี่สำหรับหน่วยความจำอินเทอร์เน็ตรวม
Powershell: โมดูลสตริงที่เลือก: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
และโพสต์บล็อกที่ให้ข้อมูลพร้อมตัวอย่างขั้นสูง: "วิธีการ" grep "ใน PowerShell" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
ตัวอย่างง่ายๆจากบล็อกโพสต์: cat package.json | เลือกสตริง -Pattern webpack ls ./src/components/ | เลือกสตริง - มุมมองรูปแบบ
C:> cat post.md | เลือกสตริง - รูปแบบ "^ \ w *:"
ใช้ Cygwin ...
มันมีรุ่น 32 และ 64 บิต
และใช้งานได้ดีจาก Windows 2000 (*)
ถึง Windows 10 หรือ Server 2019
ฉันใช้ Cygwin มาเป็นเวลานาน ...
และเมื่อเร็ว ๆ นี้ได้พยายามทดแทนระบบปฏิบัติการ Windows-Linux-Subsystems ...
ไม่นาน ...
ฉันกลับไปที่ Cygwin อีกครั้งอย่างรวดเร็ว ...
มีความยืดหยุ่นมากขึ้นสามารถควบคุมได้และรวย ...
ยังรบกวนน้อยกว่า ...
เพียงเพิ่ม \ bin ลงในพา ธ ...
และคุณสามารถใช้มันได้ใน Windows / Batch / Powershell ...
หรือใน DOS-Box ... หรือใน Powershell-Box ...
นอกจากนี้คุณยังสามารถติดตั้งแพ็คเกจที่ยอดเยี่ยม
ซึ่งใช้งานได้จริง ... เช่น nginX หรือ PHP ... ฉันยังใช้แพ็คเกจ Cygwin PHP ใน IIS ของฉัน ...
ในฐานะที่เป็นโบนัสคุณสามารถใช้มันได้จากเปลือกทุบตี ...
(ฉันคิดว่านี่เป็นเจตนาดั้งเดิม ;-))