删除文件每行末尾的选项卡

要删除文本文件每行末尾的选项卡,我这样做

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