要删除文本文件每行末尾的选项卡,我这样做
findstr /r /v /c:"[ ]$" "~1">result.txt
但标签仍然在那里。
一个文件的例子
John Doe Bob Materson ..........
在John Doe,Bob Materson …之后,它可能有一些标签。 我想消除它们,使我的输出文件(“result.txt”)不再有他们。
在网上search,我发现可以使用'sed'命令来执行它,但是我不想在PC上安装它。 所以,如果有一个解决scheme不使用它,我真的希望在你的预料中感谢你。
当我遇到类似的问题时,我使用了more
的命令,除了参数外,它和类型命令类似。 这里是命令:
more /T0 [File name] > results.txt
/T0
指定将每个选项卡转换为0空格,基本上摆脱它们。 注意这将摆脱.txt文件中的每个选项卡。
希望这有助于。
你的Mona。
@echo off rem Insert an EndOfFile mark in original file (choose one good for you): echo :EOF:>> file.txt call :CopyLines < file.txt > result.txt goto :EOF :CopyLines set line= set /P line= if "%line%" equ ":EOF:" exit /B echo(%line% goto CopyLines
检查行结尾的一个tab
,如果存在则删除:
@echo OFF &SETLOCAL FOR /f "delims=" %%i IN ('findstr /n "^" file') DO ( SET "line=%%i" SETLOCAL ENABLEDELAYEDEXPANSION SET "line=!line:*:=!" ECHO(%%i|FINDSTR /r /c:".* $" >NUL && ECHO(!line:~0,-1! || ECHO(!line! REM this is a <tab>--^ ENDLOCAL )
你应该更好地使用GNU sed :
sed s/\t$// file
这不是一个通用的解决方案,但是如果你确定在文本本身没有任何标签 (只有尾随和可能是前导),你可以直接从命令行使用for /f
:
for /f "delims= " %L in (file.txt) do @echo %L >result.txt
这将从数据中去除任何前导/尾随选项卡 – 但是如果您在文本中有任何选项卡,则也会导致不完整的行!
在delims=
之后的字符需要是实际的Tab (不要从这里复制/粘贴,要么在编辑器中准备,要么用/f:off
开关cmd以避免制表符扩展)。
这只不过是文本文件编辑的一个特例。 如何在Windows命令行环境中找到并替换文件中的文本?
我最喜欢的选择是一个名为REPL.BAT的混合JScript / Batch实用程序,它提供了正则表达式搜索和替换批处理编程和命令行的功能。 该脚本不需要安装任何第三方可执行文件,并且可以兼容任何从XP以来的Windows平台。
假设你在你的PATH或者你当前的目录中都有REPL.BAT ,那么你所需要的就是:
type "%~1"|repl "\t*$" "" >"%~1.new" move /y "%~1.new" "%~nx1" >nul