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

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

本帖最后由 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

用 $锚定最后部分
s/ +(\w+)$/;$1/;

TOP

回复 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

评分人数

TOP

本帖最后由 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;/"
复制代码

TOP

回复 3# CrLf


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

评分人数

    • CrLf: -r 和 +技术 + 1

TOP

本帖最后由 CrLf 于 2014-8-22 19:13 编辑

回复 2# apang


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

评分人数

    • apang: 原来可以不要g技术 + 1

TOP

  1. sed -r "s/ +([^ ]+)$/;\1/g" test.txt>test1.txt
复制代码

TOP

返回列表