用JREPL.bat替换控制字符

时间:2017-01-31 20:57:16

标签: batch-file sed

我正在尝试用控制字符新页面替换文件中的'HEADER'(FF - 十六进制值= C)。我能够使用SED执行此操作,如下所示:

sed -I "s/HEADER/\xC/g" c:\myfile.txt  

我希望能够使用JREPL.BAT执行此操作。我没有成功尝试以下内容:

c:\jrepl "HEADER" "\xC" /f myfile.txt /o -
c:\jrepl "HEADER" "\xC" /x /f myfile.txt /o -

我想用jrepl做这件事的原因是为了避免在最终需要运行脚本的每个人的计算机上安装SED。 关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

您不需要几百行批处理文件来执行替换,就像这个一样简单。下面的两行批处理文件也是如此:

@set @a=0 // & cscript //nologo //E:JScript "%~F0" < myfile.txt > out.txt & move /Y out.txt myfile.txt & goto :EOF 

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/HEADER/g,"\x0C"));

有关正则表达式语法的进一步说明,请参阅this page

修改

为了轻松测试该程序,您可以这样修改它:

@set @a=0 /*
cscript //nologo //E:JScript "%~F0" < myfile.txt > out.txt
move /Y out.txt myfile.txt
goto :EOF */

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/HEADER/g,"\x0C"));

然后,打开命令提示会话并从命令行执行它,以便在屏幕上看到任何错误消息。例如:

C:>\Users\Antonio\test type myfile.txt
This is a data line
HEADER This is the first line at top of page
This is more data line


C:>\Users\Antonio\test test.bat

C:>\Users\Antonio\test cscript //nologo //E:JScript "C:\Users\Antonio\test\test.bat"  0<myfile.txt 1>out.txt

C:>\Users\Antonio\test move /Y out.txt myfile.txt
Se han movido         1 archivos.

C:>\Users\Antonio\test goto :EOF */


C:>\Users\Antonio\test type myfile.txt
This is a data line
♀ This is the first line at top of page
This is more data line