Board logo

标题: [文本处理] 【求助】我想删除文件里面每行中指定字符前面的内容 [打印本页]

作者: no543216789    时间: 2008-9-27 22:35     标题: 【求助】我想删除文件里面每行中指定字符前面的内容

各们大哥大姐帮忙看一下!例如有下面一个这样的脚本,
[1]中国你好!
[2]中国你好!
[3]中国你好!
[4]中国你好!
我想把每行里面“中国”前面的字符全部删掉!就是说在这个文件中,把每一行“中”字前面的内容全部删除,
让文本里面的内容最后变成下面这样
中国你好!
中国你好!
中国你好!
中国你好!
请问一下,可以实现这样可能吗,谢谢!
作者: no543216789    时间: 2008-9-27 22:36

各位帮主,请帮忙看一下,谢谢了
作者: namejm    时间: 2008-9-27 23:03

  演示代码如下(没有考虑特殊情况):
  1. @echo off
  2. cd.>result.txt
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in (test.txt) do (
  5.     set "str=%%i"
  6.     set "str=!str:*中=中!"
  7.     echo !str!>>reslut.txt
  8. )
  9. start result.txt
复制代码

作者: no543216789    时间: 2008-9-27 23:13

请问一下这位大哥,这句话是什么意思
set "str=!str:*中=中!"
作者: namejm    时间: 2008-9-27 23:14

  把第一个中字及其之前的字符串替换为中字。
作者: no543216789    时间: 2008-9-27 23:16

真的可以啊,谢谢这位大哥了,非常感谢
作者: Batcher    时间: 2008-9-27 23:58     标题: 回复 4楼 的帖子

尽快学会自己看帮助
set /?
环境变量替换已如下增强:

   %PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

作者: batman    时间: 2008-9-28 09:29

如果这个字符前有一个固定字符(用a代替),可以不用这么麻烦:
  1. @echo off
  2. for /f "tokens=1*,delims=a" %%i in (a.txt) do echo %%j
  3. pause>nul
复制代码

作者: batman    时间: 2008-9-28 09:32

如果楼主的系统中有sed:
  1. sed "s/.*中/中/" a.txt
复制代码

作者: 随风    时间: 2008-10-1 01:33

完善一下8楼的代码,考虑到某行不含“中”字时,不至于丢失行。
  1. @echo off
  2. for /f "tokens=1*,delims=中" %%i in (a.txt) do (
  3.    if "%%j"=="" (echo %%i) else echo %%j
  4. )
  5. pause>nul
复制代码

batman 开始研究 sed 了。。。? 好事。。
这该死的正则,我一直无法静心研究。。
以后我又多一个人请教问题了,呵呵。。。。好。




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