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

[文本处理] [已解决]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
每个文本的长度(行数)不等,但都是五列,都以逗号相隔,而且每个文本的
第五列的数值也是不一样的,就是想求个批处理,把文件夹内所有的文本的第
四列后面的内容删去(,数值),保存为原来文本名。

我想在输出时把第三列和第四列调换位置
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

评分人数

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

回复 3# QIAOXINGXING


    呵呵,谢谢啦,我在for语句没有括号,弄得都是显示最后一行数据。
:handshake :handshake :handshake :handshake :handshake

TOP

话说如果修改了主楼的要求,最好标示出来。。。
  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
复制代码

TOP

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

TOP

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

TOP

返回列表