标题: [文本处理] 批处理怎样替换文本里空格为逗号? [打印本页]
作者: hkxinghu 时间: 2011-9-27 08:04 标题: 批处理怎样替换文本里空格为逗号?
本帖最后由 hkxinghu 于 2011-9-28 12:39 编辑
文本里包括多列 每列都是不规则的空格分隔 想把这些空格替换成一个,
1 11 1111 112
22 100 222 111111111
111 1 22 3333333
批处理后要的结果
1,11,1111,112
22,100,222,111111111
111,1,22,3333333
作者: CrLf 时间: 2011-9-27 08:50
- @(for /f "delims=" %%a in (a.txt)do echo;&for %%b in (%%a)do set/p=%%b)<nul>b.txt
复制代码
- %1 @cmd /q /v /c"for /f "delims^=" %%a in (a.txt)do set str=%%a&(for /l %%b in (-9 1)do set str=!str: = !)&echo !str: =,!"
复制代码
手机不便,怎么短怎么写,不考虑可读性…
作者: awk 时间: 2011-9-27 10:18
- gawk -v OFS=, "$1=$1" a.txt >b.txt
复制代码
作者: hankerer 时间: 2011-9-27 11:02
借一下fr工具- @echo off
- for /f "tokens=*" %%i in (a.txt) do echo %%i>>b.txt
- fr /r:" +" /t:"," b.txt
复制代码
作者: awk 时间: 2011-9-27 11:27
回复 4# hankerer
保留最后一行,前面两行可以删掉吧?
作者: awk 时间: 2011-9-27 11:30
- sed -r "s/ +/,/g" a.txt >b.txt
复制代码
作者: hankerer 时间: 2011-9-27 12:02
回复 5# awk
前两行是去行首的空白字符的
作者: awk 时间: 2011-9-27 14:27
回复 7# hankerer
但是,行首本来就没有空白字符啊。
作者: hankerer 时间: 2011-9-27 17:09
回复 hankerer
但是,行首本来就没有空白字符啊。
awk 发表于 2011-9-27 14:27
哈。不知道为啥我复制到本地的记事本上就多了行首的空格。行首没空格的话只一句fr就够了。
作者: zaixinxiangnian 时间: 2011-9-27 17:30
回复 2# CrLf
没有看懂你这个是什么用法,能否给解释下
set/p=%%b)<nul>b.txt
作者: hkxinghu 时间: 2011-9-27 21:26
本帖最后由 hkxinghu 于 2011-9-28 07:27 编辑
回复 2# CrLf
感谢版主用手机写的批处理啊 ,第二个可以用。但是有个问题就是单独运行可以 用其他批处理CALL 调用他就不行 不知道什么原因呢
%1 @cmd /q /v /c"for /f "delims^=" %%a in (a.txt) do set str=%%a&(for /l %%b in (-9 1) do set str=!str: = !)& >>result.txt echo !str: =,!"
作者: Hello123World 时间: 2011-9-29 13:00
- @echo off
- (for /f "delims=" %%a in (a.txt)do echo;&for %%b in (%%a)do set/p=%%b,)<nul
- pause
复制代码
作者: xslxslxsl 时间: 2011-9-29 14:01
回复 3# awk
gawk -v中的v是什么意思啊?
作者: FOR 时间: 2011-9-29 14:37
3楼为什么要 $1=$1 呢?没有还不行。
作者: awk 时间: 2011-9-29 16:46
回复 13# xslxslxsl
-v主要用来在awk里面引用外部变量,这里是用来设置OFS=,(输出时域分隔符设置成逗号)
作者: awk 时间: 2011-9-29 16:48
回复 14# FOR
设置OFS=,之后,需要对整行内容进行重组,$1=$1就是起到这个作用,你用$2=$2也行的。
作者: FOR 时间: 2011-9-29 18:39
回复 16# awk
谢谢,还是不理解,就当是个公式强记吧
作者: xslxslxsl 时间: 2011-9-30 08:27
回复 15# awk
哦,谢谢指点,原来是这样啊,也就是要用OFS的时候,这个v也要一起用的是不是啊?
作者: awk 时间: 2011-9-30 08:31
回复 18# xslxslxsl
还有另外一种写法:- gawk "BEGIN{OFS=\",\"}$1=$1" a.txt >b.txt
复制代码
作者: xslxslxsl 时间: 2011-9-30 13:33
本帖最后由 xslxslxsl 于 2011-9-30 13:35 编辑
回复 19# awk
原来是这样的啊,其实我还不是很清楚GAWK的用法,虽然这些天在往上看,可是就是不能很好的理解,毕竟在WINDOWS系统下的教材很少的,所以要再次谢谢你哦。关于这方面的问题,我今后也要多多向你请教,望能继续耐心指导,非常感谢。
作者: awk 时间: 2011-9-30 13:35
回复 20# xslxslxsl
可以照搬UNIX上的教程,只需要注意双引号和单引号就行了,其它没啥区别。
作者: xslxslxsl 时间: 2011-10-2 20:03
回复 21# awk
首先还是感谢你的指点,谢谢。 是的,这方面的确是这样的,那就是搞不清楚,哪些东西在大括号内,哪些在大括号外,对于GAWK 中的PATTERN {ACTION}形式不是很清楚,有些教程上的形式又是GAWK [OPTION] '{PATTERN+ACTION}' {FILENAMES},对于哪些东西在大括号内,哪些在大括号外的,我还真是搞不清楚,能否指点迷津,谢谢。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |