找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31436|回复: 6

[文本处理] 【已解决】批处理用分号取代文件里每行尾端(右)空格

[复制链接]
发表于 2014-8-22 16:53:29 | 显示全部楼层 |阅读模式
本帖最后由 hp051247767 于 2014-8-25 08:10 编辑

如何在txt中用分号取代文件里每行尾端(右)空格
如原檔test.txt
2014/8/21 上午 11:21  D:\09.(GM0)\工安課\17、OHSAS-02(NEW)\TSMC OHSAS專案\列管Level-1技能合格證名冊100.12.10.xls  john
2014/8/21 上午 11:25  D:\09.(GM0)\工安課\17、OHSAS-02(NEW)\TSMC OHSAS專案\JG 100.11\局限空間學科考卷-A.+術科.doc  lily
2014/8/21 上午 11:41  D:\09.(GM0)\工安課\17、OHSAS-02 (NEW)\作業環境測定\102年\102.11.27  joann
2014/8/21 上午 11:45  D:\04.公用區\軟體\BR11.5A.exe maggie
加分号得到下面的效果

2014/8/21 上午 11:21  D:\09. GM0\工安課\17、OHSAS-02 (NEW)\TSMC OHSAS專案\列管Level-1技能合格證名冊100.12.10.xls ;john
2014/8/21 上午 11:25  D:\09. GM0\工安課\17、OHSAS-02 (NEW)\TSMC OHSAS專案\JG 100.11\局限空間學科考卷-A.+術科.doc;lily
2014/8/21 上午 11:41  D:\09. GM0\工安課\17、OHSAS-02 (NEW)\作業環境測定\102年\102.11.27;joann
2014/8/21 上午 11:45  D:\04.公用區\軟體\BR11 5A.exe;maggie
发表于 2014-8-22 18:33:49 | 显示全部楼层
  1. sed -r "s/ +([^ ]+)$/;\1/g" test.txt>test1.txt
复制代码
发表于 2014-8-22 19:12:14 | 显示全部楼层
本帖最后由 CrLf 于 2014-8-22 19:13 编辑

回复 2# apang


    貌似可以利用贪婪匹配简化一下
  1. sed -r "s/(.*) /\1;/" test.txt>test1.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
apang + 1 原来可以不要g

查看全部评分

发表于 2014-8-22 19:40:50 | 显示全部楼层
回复 3# CrLf


    但如果要删除最后多个空格的话,貌似要这样?
  1. sed -r "s/(.*[^ ]) +/\1;/" a.txt>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 -r 和 +

查看全部评分

发表于 2014-8-22 20:24:25 | 显示全部楼层
本帖最后由 CrLf 于 2014-8-22 20:52 编辑

回复 4# apang


    突然发现你用的是 +,原来 sed 启用了 -r 后可以用 + 了,可惜还是不支持预查
    可以用 \S 和 \s 简化下,为 -r 开关点赞:
  1. sed -r "s/(.*\S)\s+/\1;/" a.txt>b.txt
复制代码
话说很郁闷 sed 的引用序号为什么不是从最内层到最外层,而是从左到右,原来想回复这个的:
  1. sed -r "s/(.*)(( +))/\1;/"
复制代码
发表于 2014-8-24 00:17:42 | 显示全部楼层
回复 5# CrLf


    引用序号好像是从外到内,从左到右
  1. Set re = New RegExp
  2. re.Pattern = "((.).(.))."
  3. s = re.Replace("abcd", "$1, $2, $3")
  4. MsgBox s
复制代码
$1为abc,$2为a,$3为c
试了下,sed也是这样的
C:\Windows\System32>echo,abcd|sed -r "s/((.).(.))./\1, \2, \3/"
abc, a, c

C:\Windows\System32>

评分

参与人数 2技术 +2 收起 理由
hp051247767 + 1 乐于助人
CrLf + 1 感谢指正

查看全部评分

发表于 2014-8-24 10:09:45 | 显示全部楼层
用 $锚定最后部分
s/ +(\w+)$/;$1/;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 04:27 , Processed in 0.031226 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表