2010-02-04 2 views
2

Я использую grepWin для общего поиска файлов и wingrep, когда хочу делать замены или что-то делать.Замена grep с расширенной реализацией регулярных выражений

GrepWin имеет обширную реализацию регулярных выражений, однако не выполняет замены (как упоминалось выше).

Wingrep выполняет замены, однако имеет строго ограниченный диапазон реализации регулярных выражений.

Кто-нибудь знает о каких-либо (желательно бесплатных) инструментах grep для окон, которые выполняют замену и имеет разумную реализацию регулярных выражений?

Заранее спасибо.

+0

Это на самом деле не программирование связанных с ...это, вероятно, лучше всего на суперпользователе. –

+0

Я считаю, что это связано с программированием, поскольку это инструмент, который я считаю неоценимым как программист и для программирования. – Russell

+0

Спасибо за вашу помощь всем, я сделал замену. :) В итоге я использовал комбинацию grep как часть инструментов GNU для окон. Еще раз спасибо :) – Russell

ответ

2

Я использую Cygwin довольно много для такого рода задач.

К сожалению, у него самый неинтуитивный установщик в мире, но как только он установлен правильно, он очень полезен ... кроме нескольких мелких проблем с копированием и вставкой и нечетной проблемой с концами строк.

Хорошо, что все инструменты работают как на реальной системе GNU, поэтому, если вы уже знакомы с Linux или похожими, вам не нужно ничего узнавать (кроме того, как использовать этот сумасшедший установщик).

В целом я думаю, что преимущества составляют несколько проблем удобства использования.

+0

Это хорошая идея. Раньше у меня были плохие впечатления от проблем, о которых вы упомянули, однако это определенно стоит попробовать. Спасибо :) – Russell

3

Я думаю, что perl в командной строке - это ответ, который вы ищете. Широко портативная, мощная поддержка регулярных выражений.

Давайте предположим, что у вас есть следующий файл:

foo 
bar 
baz 
quux 

вы можете использовать

perl -pne 's/quux/splat!/' -i /tmp/foo 

производить

foo 
bar 
baz 
splat! 

Магия в командной строке Perl переключается:

  • -e: выполнить следующий аргумент как команду perl.
  • -n: выполнить команду на каждой строке
  • -p: распечатать результаты команды без выдачи явного выражения 'print'.
  • -i: сделать замену на месте. перезапишите документ с помощью вывода вашей команды ... используйте с осторожностью.
1

Если вы находитесь в Windows, вы можете использовать vbscript (не требует загрузки). Он поставляется с регулярным выражением. например, изменение "один" в "ONE"

Set objFS=CreateObject("Scripting.FileSystemObject") 
Set WshShell = WScript.CreateObject("WScript.Shell") 
Set objArgs = WScript.Arguments 
strFile = objArgs(0) 
Set objFile = objFS.OpenTextFile(strFile) 
strFileContents = objFile.ReadAll 
Set objRE = New RegExp 
objRE.Global  = True 
objRE.IgnoreCase = False 
objRE.Pattern = "one" 
strFileContents = objRE.Replace(strFileContents,"ONE") 'simple replacement 
WScript.Echo strFileContents 

выход

C:\test>type file 
one 
two one two 
three 

C:\test>cscript //nologo test.vbs file 
ONE 
two ONE two 
three 

Вы можете прочитать vbscript doc, чтобы узнать больше об использовании регулярных выражений

+0

Большое спасибо, VB Script пригодился несколько раз в прошлом для меня тоже. Я использовал его, чтобы вскрыть окно ввода для параметров в сценариях nant. – Russell

Смежные вопросы