标题: [文本处理] 【已解决】批处理用分号取代文件里每行尾端(右)空格 [打印本页]
作者: hp051247767 时间: 2014-8-22 16:53 标题: 【已解决】批处理用分号取代文件里每行尾端(右)空格
本帖最后由 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
作者: apang 时间: 2014-8-22 18:33
- sed -r "s/ +([^ ]+)$/;\1/g" test.txt>test1.txt
复制代码
作者: CrLf 时间: 2014-8-22 19:12
本帖最后由 CrLf 于 2014-8-22 19:13 编辑
回复 2# apang
貌似可以利用贪婪匹配简化一下- sed -r "s/(.*) /\1;/" test.txt>test1.txt
复制代码
作者: apang 时间: 2014-8-22 19:40
回复 3# CrLf
但如果要删除最后多个空格的话,貌似要这样?- sed -r "s/(.*[^ ]) +/\1;/" a.txt>b.txt
复制代码
作者: CrLf 时间: 2014-8-22 20:24
本帖最后由 CrLf 于 2014-8-22 20:52 编辑
回复 4# apang
突然发现你用的是 +,原来 sed 启用了 -r 后可以用 + 了,可惜还是不支持预查
可以用 \S 和 \s 简化下,为 -r 开关点赞:- sed -r "s/(.*\S)\s+/\1;/" a.txt>b.txt
复制代码
话说很郁闷 sed 的引用序号为什么不是从最内层到最外层,而是从左到右,原来想回复这个的:- sed -r "s/(.*)(( +))/\1;/"
复制代码
作者: apang 时间: 2014-8-24 00:17
回复 5# CrLf
引用序号好像是从外到内,从左到右- Set re = New RegExp
- re.Pattern = "((.).(.))."
- s = re.Replace("abcd", "$1, $2, $3")
- 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>
作者: 523066680 时间: 2014-8-24 10:09
用 $锚定最后部分
s/ +(\w+)$/;$1/;
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |