[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求助批处理如何删除文件中最后一个 逗号字符?

本帖最后由 antyison 于 2015-2-15 23:14 编辑

文本文件是这样的,类似的文件有很多,我想删除最后一个逗号字符

SELECT
ID ,
CONTROL_ID ,
USER_ID ,
ATTRIBUTE_01 ,
ATTRIBUTE_02 ,
FROM
COMPONENT_CONFIGS;

删除后变成

SELECT
ID ,
CONTROL_ID ,
USER_ID ,
ATTRIBUTE_01 ,
ATTRIBUTE_02  
FROM
COMPONENT_CONFIGS;

请大师指点。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

如果文本只是这样就简单了
  1. @echo off
  2. for /f "tokens=1 delims=," %%i in (1.txt) do echo %%i
  3. pause
复制代码

TOP

回复 2# 愤怒的CMD


    这样操作会把所有的逗号全删掉,而我只需要删除整个文件中的最后一个,其余的还是要保留的。

TOP

回复 3# antyison
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do (
  3.     set a=%%i
  4.     if "!a:~-1!"=="," (echo !a:~0,-1!) else (echo !a!)
  5. )
  6. pause
复制代码

TOP

本帖最后由 antyison 于 2015-2-14 14:54 编辑

回复 4# 愤怒的CMD


    额,测了一下,还是把所有逗号全删掉了... ...


如果从逻辑关系上算,删除FROM前的一个逗号也是可以的。

TOP

回复 5# antyison
我测试没有问题啊。你试试

TOP

回复 6# 愤怒的CMD


在我的机器执行了一下。。。

TOP

  1. sed i.txt "N;s/,\nFROM/\nFROM/;P;D" 1.txt
复制代码

TOP

本帖最后由 pcl_test 于 2015-2-14 15:44 编辑

回复 1# antyison

把批处理跟txt文件放在一起运行,测试前先备份原文件
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b *.txt') do (
  4. for /f "tokens=1* delims=:" %%i in ('findstr /e /n "," "%%a"') do set m=%%i
  5. set n=1
  6. for /f "delims=" %%s in ('type "%%a"') do (
  7. set "str=%%s"
  8. if !n! == !m! (
  9. >>$ echo,!str:~0,-1!
  10. ) else (
  11. >>$ echo,!str!
  12. )
  13. set /a n+=1
  14. )
  15. move $ "%%a"
  16. )
  17. pause
复制代码
1

评分人数

    • antyison: 非常感谢,问题解决了:)技术 + 1

TOP

  1. sed "s/,$//g" 1.txt
复制代码

TOP

回复 10# 愤怒的CMD


    非常感谢你的回复,windows的sed命令好像需要单独下载一下。9楼的方案已经可以解决我的问题,还是非常感谢:)

TOP

回复 1# antyison

如果问题解决请在标题最前面标上【已解决】
http://www.bathome.net/thread-3473-1-1.html

TOP

回复 11# antyison


是的,这里可以下载:
http://bbs.bathome.net/thread-3981-1-1.html

TOP

返回列表