Board logo

标题: [文本处理] [已解决]批处理怎样将文本的最后一个逗号改成分号? [打印本页]

作者: hucuibai    时间: 2011-3-29 17:11     标题: [已解决]批处理怎样将文本的最后一个逗号改成分号?

use gamerecord-chn1030
insert into gmoperation(OperationTime,Operator,OperationCommand,Target) values
("2011-1-1 19:31:35", 108040335435, 8, 108040335435),
("2011-1-1 19:31:40", 108040335435, 6, 108040335435),
这样一个txt文档,现在要把最后一个逗号改成分号,要怎么写?求教!
作者: hucuibai    时间: 2011-3-29 18:02

怎么没人来看看啊!
作者: 随风    时间: 2011-3-29 18:04

  1. @echo off
  2. (for /f "delims=" %%i in ('findstr /n .* a.txt') do (
  3.    set "str=%%i"
  4.    for /f "tokens=1* delims=:" %%a in ("%%i") do (
  5.        if "%%b"=="" (echo;) else (
  6.           setlocal enabledelayedexpansion
  7.           set "str=!str:*:=!"
  8.           if "!str:~-1!"=="," set "str=!str:~0,-1!;"
  9.           echo;!str!
  10.           endlocal
  11. ))))>tem.txt
  12. pause
复制代码

作者: Batcher    时间: 2011-3-29 20:52

  1. sed -i "s/,$/;/" a.txt
复制代码

作者: hucuibai    时间: 2011-3-30 10:00

Batcher的改不了  我只需要改最后一个最后一行最后一个逗号
作者: acaigg    时间: 2011-3-30 10:20

你的没有sed命令吗?
作者: hucuibai    时间: 2011-3-30 10:29

6# acaigg


sed命令有,改过之后就全都变了把每个逗号都改成了分号,而且变成一行了!
作者: hucuibai    时间: 2011-3-30 10:47

sed -i "$s/,$/;/" a.txt我用这个命令改了 但是改了之后的格式不对了,都成一行了 每行之间有一个退格符
作者: Batcher    时间: 2011-3-30 12:24

8# hucuibai


你用的哪个版本的sed?什么操作系统?
作者: Batcher    时间: 2011-3-30 12:25

7# hucuibai
  1. sed "s/,$/;/" a.txt | more >b.txt
复制代码

作者: CrLf    时间: 2011-3-30 13:35

本帖最后由 zm900612 于 2011-3-31 17:04 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.    echo;!last!
  4.    set last=%%a
  5. )
  6. if "!last:~-1!"=="," set last=!last:~0,-1!;
  7. echo %last%)>tmp
  8. move tmp 1.txt
  9. pause
复制代码





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