Page 7 of 10
Re: FindRepl.bat:New regex utility to search and replace str
Posted: 27 Aug 2015 05:06
by foxidrive
Hi Antonio,
When I tried to change three letters in the block using the /e: switch in findrepl V2.2 it replaced/removed the primary rSearch term instead.
V 2.2 returns this:
V1.x returns this:
Sample code
Code: Select all
@echo off
(
echo(aaa
echo(555
echo(bbb
)>filein.txt
type filein.txt|findrepl "aaa" /e:"bbb" /b:"555" ""
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 16 Dec 2015 00:41
by foxidrive
Hi Aacini!
Here's some sample code to make an issue clearer that is in the current findrepl.bat
findrepl July 7 2013 This is the correct output
AAA bbb
ccc ddd
findrepl 2.2 This is not right.
\r\nAAA bbb
ccc ddd
Sample codeCode: Select all
@echo off
(
echo(
echo(aaa bbb
echo(ccc ddd
echo(
)>file.txt
type file.txt|findrepl "\r\naaa" "\r\nAAA"
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 08 Mar 2016 20:29
by foxidrive
Antonio, should findrepl be able to be chained on the command line?
I see this here:
c:\Files\Misc\+bat\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
c:\Files\Misc\+bat\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
c:\Files\Misc\+bat\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
Code: Select all
@echo off
(
echo line 1
echo line 2
echo line 3
echo line 4
echo line 5
echo line 6
echo line 7
echo line 8
echo line 9
echo line 10 first string here...
echo line 11
echo line 12
echo line 13 second string here...
echo line 14
)>"file.txt"
:go
@echo off
set "file=file.txt"
call findrepl /o:10:10 < "%file%"|findrepl "^(.*)$" "Heading $1" /R
call findrepl /o:13:13 < "%file%"|findrepl "^(.*)$" "Heading $1" /R
pause
goto :go
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 05 Apr 2016 13:30
by foxidrive
I thought I had this straight when I checked the built-in help, it will print only the changed lines.
Did I get it wrong again?
Code: Select all
c:\Files>type file.txt|findrepl ".*NCName.*" "abc" /i /r
aaa
abc
zzz
c:\Files>type file.txt
aaa
111 uNcName 222
zzz
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 07 May 2016 12:23
by catalinnc
@Aacini
1st thanks a lot for this very useful script...
i need a little help...
please, be kind and provide a line that will replace this characters with a space...
if this is posible all in one line it will be perfect...
input file is "input.txt" and output file is "output.txt"...
thanks a lot...
_
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 07 May 2016 18:39
by Aacini
@catalinnc, this works at the command-line prompt:
Code: Select all
FindRepl "[=%@^!<>&|]" "' '" /Q:@ /J < input.txt > output.txt
HOWEVER...FindRepl.bat is an almost-1000-lines complex Batch file capable of perform very advanced replacement tasks, but your replacement request is a very simple one. Perhaps you would consider to use a much simpler 4-lines Batch-JScript hybrid script that perform the same task instead...
Code: Select all
@set @a=0 /*
@cscript //nologo //E:JScript "%~F0" < input.txt > output.txt
@goto :EOF */
WScript.Stdout.WriteLine(WScript.Stdin.ReadAll().replace(/[=%"\^!<>&\|]/g,' '));
Save this file with .bat extension.
Antonio
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 08 May 2016 12:14
by catalinnc
@Aacini thanks a lot for your support...much respect...
_
Code: Select all
FindRepl "[=%@^!<>&|]" "' '" /Q:@ /J < input.txt > output.txt
works perfect from command-line prompt...
please, can you mod it so it will work from a .bat file?
_
Code: Select all
@set @a=0 /*
@cscript //nologo //E:JScript "%~F0" < input.txt > output.txt
@goto :EOF */
WScript.Stdout.WriteLine(WScript.Stdin.ReadAll().replace(/[=%"\^!<>&\|]/g,' '));
works perfect from a .bat file!
_
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 11 May 2016 23:56
by thefeduke
catalinnc, Here is a one-liner that works with Prompt or .bat .
Although it functions within the limited scope that you described, it does break down if the character '!' is imbedded one or more times within a larger string. This is a middle approach that has no advantage other than to see if it could be done without going outside of plain batch script.
The above requires this file that I named Poison.bat :
Code: Select all
@Echo Off
SETLOCAL enabledelayedexpansion
set "DelChars== %% ^" ^^^^ ^^! ^< ^> ^& ^| "
set "DelChars=!DelChars: =!"
For /F "usebackq tokens=* delims=" %%I in ("%~1") DO (
set "str=A%%I"
set "len=0"
For /L %%A in (15,-1,0) do (
set /a "len|=1<<%%A"
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"
)
Set /A "pos=!len!-1"
Set "PoisonString=%%I"
IF "!PoisonString!" EQU "" (
Set PoisonString=^^!
set "pos=0"
)
For /L %%C in (0,1,8) do (
Set "Base=!DelChars:~%%C,1!"
For /L %%P in (!pos!,-1,0) do (
Set "Test=!PoisonString:~%%P,1!"
If /I "!Test!" EQU "!Base!" (
Set "Sterile= !Sterile!"
) Else (
Set "Sterile=!PoisonString:~%%P,1!!Sterile!"
)
)
Set "PoisonString=!Sterile!"
Set "Sterile="
)
If /I "%%I" EQU "" (
Rem. Echo.Panic^^!
Set "PoisonString= "
)
Echo.!PoisonString!
)
Exit /B
John A.
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 25 May 2016 14:34
by thefeduke
thefeduke wrote:catalinnc, ... Although it functions within the limited scope that you described, it does break down if the character '!' is imbedded one or more times within a larger string. This is a middle approach that has no advantage other than to see if it could be done without going outside of plain batch script.
I tried to build a preprocessor to handle the "!" and found that I could incorporate it right into the above. The solution is posted within Topic: "Replace specific line in a .txt with text" at
http://www.dostips.com/forum/viewtopic.php?f=3&t=7167&p=46734#p46734 and it can handle the above as well as turning :
Code: Select all
The=teacher%angry:"Shut up!^Be<quiet>and&listen|to me!
into
Code: Select all
The teacher angry: Shut up. Be quiet and listen to me.
John A.
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 25 Jul 2016 20:26
by foxidrive
Hi guys, I'm after some feedback to ascertain if this problem is on my machine.
If you open a cmd prompt and run each of these scripts multiple times in a row - do you get an error message at all?
Both scripts should just show
ccc on the console.
I find that I get an error message randomly. Sometimes it prints
ccc just fine.
Code: Select all
@echo off
echo aaa|findrepl "aaa" "bbb"|more|findrepl "bbb" "ccc"
Code: Select all
@echo off
echo aaa|findrepl "aaa" "bbb"|findrepl "bbb" "ccc"
The second script doesn't work at all here - and I get different error messages.
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 26 Jul 2016 06:00
by dbenham
I can't reproduce your problem - Both work just fine for me after repeated runs ('though I ran the command from the command line, not a script)
Dave Benham
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 26 Jul 2016 16:07
by thefeduke
This is Win7 Home Premium SP1 64-bit with findrepl at the front of my path not in CD.
Code: Select all
C:\Users\Zani\Scripts>foxibug2
ccc
C:\Users\Zani\Scripts>foxibug1
ccc
C:\Users\Zani\Scripts>foxibug2
ccc
C:\Users\Zani\Scripts>foxibug1
ccc
C:\Users\Zani\Scripts>foxibug2
ccc
C:\Users\Zani\Scripts>foxibug1
C:\Users\Zani\Programs\Functions\FindREPL.bat(318, 1) Microsoft JScript runtime error: Permission denied
C:\Users\Zani\Scripts>foxibug1
ccc
C:\Users\Zani\Scripts>foxibug1
ccc
C:\Users\Zani\Scripts>foxibug1
ccc
C:\Users\Zani\Scripts>
foxibug1.bat wrote:@echo off
::
viewtopic.php?p=48056#p48056:: Post subject: Re: FindRepl.bat:New regex utility to search and replace strings
::Posted: Mon Jul 25, 2016 10:26 pm by foxidrive
echo aaa|findrepl "aaa" "bbb"|more|findrepl "bbb" "ccc"
I also have Win10 handy: one Win7 32-bit based and one Win8.1 based. Let me know, but I guess he above is something.
John A.
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 26 Jul 2016 21:36
by foxidrive
Thank you John and thanks Dave.
The error you saw here John is the same error I see.
thefeduke wrote:This is Win7 Home Premium SP1 64-bit with findrepl at the front of my path not in CD.
Code: Select all
C:\Users\Zani\Scripts>foxibug2
ccc
C:\Users\Zani\Scripts>foxibug1
C:\Users\Zani\Programs\Functions\FindREPL.bat(318, 1) Microsoft JScript runtime error: Permission denied
Thanks for your tests, John.
Mine is Windows 8.1 32 bit and findrepl is on the path here. Running this from a cmd prompt.
My tests are below
z-more.bat
Code: Select all
@echo off
echo aaa|findrepl "aaa" "bbb"|more|findrepl "bbb" "ccc"
z.bat
Code: Select all
@echo off
echo aaa|findrepl "aaa" "bbb"|findrepl "bbb" "ccc"
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 26 Jul 2016 21:47
by foxidrive
Whatever issue causes this was introduced in Findrepl 2.1
as Findrepl 2.0 works flawlessly in both batch files here.
rem - Nov/20/2014: Version 2 - New switches: /J, /L, /G, /ARG#, and || separate regexp's in /Alternations.
Code: Select all
d:\test>for /L %a in (1,1,10) do @call z-more
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
Code: Select all
d:\test>for /L %a in (1,1,10) do @call z
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
ccc
Re: FindRepl.bat:New regex utility to search and replace strings
Posted: 26 Jul 2016 21:50
by foxidrive
rem - Dic/15/2014: Version 2.2 - New "data generating " predefined functions for /S switch combined with /J
Code: Select all
d:\test>for /L %a in (1,1,10) do @call z
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(322, 1) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(784, 4) Microsoft JScript runtime error: Input past end of file
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
Code: Select all
d:\test>for /L %a in (1,1,10) do @call z-more
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
ccc
d:\test\findrepl.bat(325, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
d:\test\findrepl.bat(325, 1) Microsoft JScript runtime error: Permission denied
ccc
ccc
d:\test\findrepl.bat(318, 1) Microsoft JScript runtime error: Permission denied
ccc
ccc