Board logo

标题: [文本处理] [已解决]BAT脚本如何批量处理,删除文本的最后一列数据? [打印本页]

作者: 乱乱    时间: 2012-10-14 15:20     标题: [已解决]BAT脚本如何批量处理,删除文本的最后一列数据?

本帖最后由 乱乱 于 2012-11-1 13:57 编辑

文本格式:1,1,583460.223,2726042.232,59.000
               2,1,583464.991,2726037.856,59.000
               3,1,583459.512,2726018.528,59.000
               4,1,583455.460,2726018.159,59.000
每个文本的长度(行数)不等,但都是五列,都以逗号相隔,而且每个文本的
第五列的数值也是不一样的,就是想求个批处理,把文件夹内所有的文本的第
四列后面的内容删去(,数值),保存为原来文本名。

我想在输出时把第三列和第四列调换位置
作者: forfiles    时间: 2012-10-14 16:04

  1. gawk "BEGIN{FS=OFS=\",\"}NF-=1" a.txt >b.txt
复制代码

作者: QIAOXINGXING    时间: 2012-10-14 16:06

本帖最后由 QIAOXINGXING 于 2012-10-14 16:15 编辑
  1. @echo off
  2. md temp 2>nul
  3. for %%i in (*.txt) do (
  4. copy "%%~si"  "temp/"
  5. (for /f "tokens=1-4 delims=," %%a in (temp/%%~nxsi) do (echo %%a,%%b,%%c,%%d))>"%%~si"
  6. )
  7. pause
复制代码

作者: 乱乱    时间: 2012-10-14 16:20

回复 3# QIAOXINGXING


    呵呵,谢谢啦,我在for语句没有括号,弄得都是显示最后一行数据。
:handshake :handshake :handshake :handshake :handshake
作者: QIAOXINGXING    时间: 2012-10-16 17:22

话说如果修改了主楼的要求,最好标示出来。。。
  1. @echo off
  2. md temp 2>nul
  3. for %%i in (*.txt) do (
  4. copy "%%~si"  "temp/"
  5. (for /f "tokens=1-4 delims=," %%a in (temp/%%~nxsi) do (echo %%a,%%b,%%d,%%c))>"%%~si"
  6. )
  7. pause
复制代码

作者: forfiles    时间: 2012-10-16 17:56

删除尾列
  1. sed "s/,[^,]\+$//" a.txt >b.txt
复制代码

作者: 乱乱    时间: 2012-10-16 18:12

我后面弄明白了,可能数据多了以为没有改!~~
还是谢谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2