2017-01-31 57 views
0

我想用控制字符新頁面(FF - 十六進制值= C)替換文件中的文本'HEADER'。我能做到這一點使用SED如下圖所示:用JREPL.bat替換控制字符

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。 關於如何做到這一點的任何想法?

+2

'C' = 4bits,你用'\ x0C'試過了嗎? –

+0

我試過了,如下圖所示,而不是運氣。當我運行它時,它會將文件中的字符串'HEADER'替換爲\ x0C – Ezy

+0

c:\ jrepl「HEADER」\ x0C/f myfile.txt/o - – Ezy

回答

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 
+0

Aacini,不知道我在做什麼錯。我將這兩行代碼放在一個批處理文件中myfile.txt所在的同一目錄中。不知道我是否需要改變別的東西,因爲它似乎沒有工作。 – Ezy

+0

請參閱我的答案中的編輯。我建議你做_完全相同,然後報告出現在屏幕上的錯誤,因爲「它似乎不工作」不能幫助... – Aacini

+0

優秀的Aacini,它的工作!這與JREPL.bat做同樣的事情很好,但不必調用可執行文件。非常感謝你。 – Ezy