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

[文本处理] 批处理怎样替换文本里空格为逗号?

[复制链接]
发表于 2011-9-27 08:04:20 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2011-9-27 08:50:23 | 显示全部楼层
  1. @(for /f "delims=" %%a in (a.txt)do echo;&for %%b in (%%a)do set/p=%%b)<nul>b.txt
复制代码
  1. %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: =,!"
复制代码
手机不便,怎么短怎么写,不考虑可读性…

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 and 还可以链接for语句。

查看全部评分

发表于 2011-9-27 10:18:59 | 显示全部楼层
  1. gawk -v OFS=, "$1=$1" a.txt >b.txt
复制代码
发表于 2011-9-27 11:02:38 | 显示全部楼层
借一下fr工具
  1. @echo off
  2. for /f "tokens=*" %%i in (a.txt) do echo %%i>>b.txt
  3. fr /r:" +" /t:"," b.txt
复制代码
发表于 2011-9-27 11:27:24 | 显示全部楼层
回复 4# hankerer


保留最后一行,前面两行可以删掉吧?
发表于 2011-9-27 11:30:21 | 显示全部楼层
  1. sed -r "s/ +/,/g" a.txt >b.txt
复制代码
发表于 2011-9-27 12:02:55 | 显示全部楼层
回复 5# awk


   前两行是去行首的空白字符的
发表于 2011-9-27 14:27:34 | 显示全部楼层
回复 7# hankerer


但是,行首本来就没有空白字符啊。
发表于 2011-9-27 17:09:57 | 显示全部楼层
回复  hankerer


但是,行首本来就没有空白字符啊。
awk 发表于 2011-9-27 14:27



    哈。不知道为啥我复制到本地的记事本上就多了行首的空格。行首没空格的话只一句fr就够了。
发表于 2011-9-27 17:30:59 | 显示全部楼层
回复 2# CrLf


没有看懂你这个是什么用法,能否给解释下
    set/p=%%b)<nul>b.txt
 楼主| 发表于 2011-9-27 21:26:36 | 显示全部楼层
本帖最后由 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: =,!"
发表于 2011-9-29 13:00:56 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt)do echo;&for %%b in (%%a)do set/p=%%b,)<nul
  3. pause
复制代码
发表于 2011-9-29 14:01:37 | 显示全部楼层
回复 3# awk



    gawk -v中的v是什么意思啊?
发表于 2011-9-29 14:37:07 | 显示全部楼层
3楼为什么要 $1=$1 呢?没有还不行。
发表于 2011-9-29 16:46:19 | 显示全部楼层
回复 13# xslxslxsl


-v主要用来在awk里面引用外部变量,这里是用来设置OFS=,(输出时域分隔符设置成逗号)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 04:33 , Processed in 0.021483 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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