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

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

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

  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

评分人数

TOP

  1. gawk -v OFS=, "$1=$1" a.txt >b.txt
复制代码

TOP

借一下fr工具
  1. @echo off
  2. for /f "tokens=*" %%i in (a.txt) do echo %%i>>b.txt
  3. fr /r:" +" /t:"," b.txt
复制代码

TOP

回复 4# hankerer


保留最后一行,前面两行可以删掉吧?

TOP

  1. sed -r "s/ +/,/g" a.txt >b.txt
复制代码

TOP

回复 5# awk


   前两行是去行首的空白字符的

TOP

回复 7# hankerer


但是,行首本来就没有空白字符啊。

TOP

回复  hankerer


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



    哈。不知道为啥我复制到本地的记事本上就多了行首的空格。行首没空格的话只一句fr就够了。

TOP

回复 2# CrLf


没有看懂你这个是什么用法,能否给解释下
    set/p=%%b)<nul>b.txt

TOP

本帖最后由 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: =,!"

TOP

  1. @echo off
  2. (for /f "delims=" %%a in (a.txt)do echo;&for %%b in (%%a)do set/p=%%b,)<nul
  3. pause
复制代码

TOP

回复 3# awk



    gawk -v中的v是什么意思啊?

TOP

3楼为什么要 $1=$1 呢?没有还不行。

TOP

回复 13# xslxslxsl


-v主要用来在awk里面引用外部变量,这里是用来设置OFS=,(输出时域分隔符设置成逗号)

TOP

返回列表