要删除文本文件每行末尾的标签,我会
findstr /r /v /c:"[ ]$" "~1">result.txt
但是标签仍在那里。
文件示例
John Doe
Bob Materson
..........
在John Doe,Bob Materson ......之后,它可能有一些标签。我想消除它们,以便我的输出文件(“result.txt”)不再存在它们。
在线搜索,我发现可以使用'sed'命令执行它,但我不想在PC上安装它。因此,如果有一个不使用它的解决方案,我真的希望感谢你的预期。
答案 0 :(得分:3)
当我遇到类似的问题时,我使用了more
命令,这与命令类似,除了参数。这是命令:
more /T0 [File name] > results.txt
/T0
指定将每个制表符转换为0个空格,基本上将其删除。
请注意,这将删除.txt文件中的每个选项卡。
希望这有帮助。
你的莫娜。
答案 1 :(得分:2)
@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
答案 2 :(得分:1)
检查行尾的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
答案 3 :(得分:0)
这不是一般解决方案,但如果您确定文本中没有任何标签本身(仅限尾随和可能领先),您可以直接使用for /f
命令行:
for /f "delims= " %L in (file.txt) do @echo %L >result.txt
这会从数据中删除所有前导/尾随标签 - 但如果文字中有任何标签,则也会导致行不完整!
delims=
之后的字符需要是实际 Tab (不要从这里复制/粘贴,要么在编辑器中准备,要么使用/f:off
启动cmd以避免标签扩展)
答案 4 :(得分:0)
这只不过是文本文件编辑的特例。 How can you find and replace text in a file using the Windows command-line environment?
提供了很多选项我最喜欢的选项是名为REPL.BAT的混合JScript / Batch实用程序,它为批处理编程和命令行提供正则表达式搜索和替换功能。该脚本不需要安装任何第三方可执行文件,并且与XP以后的任何现代Windows平台兼容。
假设您在PATH或当前目录中有REPL.BAT,那么您只需要:
type "%~1"|repl "\t*$" "" >"%~1.new"
move /y "%~1.new" "%~nx1" >nul