使用批处理文件替换字符(替代 SED)
Replace characters, (alternative to SED), using a batch file
我想通过批处理将文本文件中的所有 ,
替换为 .
。
实际上我只需要一个替代命令
sed.exe "s/,/./g" $clearances.txt$ > $clearance_out.txt$
问题是 sed.exe
并未安装在我想使用它的每台 PC 上,因此我打算阅读并替换为 Windows 中的标准记事本编辑器。
有人知道怎么做吗?
clearances.txt 示例:
-12,7
-5,6
-7,6
-3,9
您可以通过以下方式完成(使用与您的 sed 等效的批处理文件):
将文件命名为 replace_string.bat
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=,"
set "replace=."
set "textFile=clearances.txt"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
首先我们要确保延迟扩展被禁用(为了 for
魔法起作用)。接下来设置要在文件中搜索和搜索的变量。
然后在循环中我使用 type
来显示文件的内容。然后^
用于转义& (run first command and then second)
和>
(重定向)。
然后将循环变量 %%i
(双 %%
存在是因为我们在批处理文件中)保存到 line
变量中,以便我们可以使用它。然后我们需要 enable delayedexpansion
这样我们就可以使用 !...!
.
棘手的部分是 echo(!line:%search%=%replace%!
。
echo(
通常打印空行。在这里您需要将它用于 line
变量扩展。没有它你会得到这样的东西:
'line:' is not recognized as an internal or external command
所以我们得到了(多亏了扩展)12,7:,=.
,这导致了最终结果 12.7
您可以使用 PowerShell
而不是 sed
。
来自批处理文件:
@PowerShell "(GC .\clearances.txt)|%%{$_ -Replace ',','.'}|SC .\clearances.txt"
在命令提示符下
PowerShell "(GC .\clearances.txt)|%{$_ -Replace ',','.'}|SC .\clearances.txt"
我想通过批处理将文本文件中的所有 ,
替换为 .
。
实际上我只需要一个替代命令
sed.exe "s/,/./g" $clearances.txt$ > $clearance_out.txt$
问题是 sed.exe
并未安装在我想使用它的每台 PC 上,因此我打算阅读并替换为 Windows 中的标准记事本编辑器。
有人知道怎么做吗?
clearances.txt 示例:
-12,7
-5,6
-7,6
-3,9
您可以通过以下方式完成(使用与您的 sed 等效的批处理文件):
将文件命名为 replace_string.bat
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=,"
set "replace=."
set "textFile=clearances.txt"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
首先我们要确保延迟扩展被禁用(为了 for
魔法起作用)。接下来设置要在文件中搜索和搜索的变量。
然后在循环中我使用 type
来显示文件的内容。然后^
用于转义& (run first command and then second)
和>
(重定向)。
然后将循环变量 %%i
(双 %%
存在是因为我们在批处理文件中)保存到 line
变量中,以便我们可以使用它。然后我们需要 enable delayedexpansion
这样我们就可以使用 !...!
.
棘手的部分是 echo(!line:%search%=%replace%!
。
echo(
通常打印空行。在这里您需要将它用于 line
变量扩展。没有它你会得到这样的东西:
'line:' is not recognized as an internal or external command
所以我们得到了(多亏了扩展)12,7:,=.
,这导致了最终结果 12.7
您可以使用 PowerShell
而不是 sed
。
来自批处理文件:
@PowerShell "(GC .\clearances.txt)|%%{$_ -Replace ',','.'}|SC .\clearances.txt"
在命令提示符下
PowerShell "(GC .\clearances.txt)|%{$_ -Replace ',','.'}|SC .\clearances.txt"