Board logo

标题: [文本处理] [已解决]批处理如何对文本内容增、删、改? [打印本页]

作者: syqh2010    时间: 2014-10-7 19:05     标题: [已解决]批处理如何对文本内容增、删、改?

本帖最后由 syqh2010 于 2015-3-4 00:25 编辑

求一个必较完善的,对文本内容同时进行增、删、改的纯批。
我不懂批处理,希望有这样的模板,需要用时直接填空就行了。
文本行数较多,部分内容如下:a.txt
xx45548
  gan124ggg
xie45578
ge12348gd
nono456
wei789f2
mang44df5
you

要求:
1)在以"man"开头的行下一行写入"thank"
   在以"wei"开头的行下一行写入"bang8856"
2)将以"xx"、"non"开头的行删除
3)将以"  gan"开头的行替换为"gan555"
   将以"xie"开头的行替换为"  xiexie"
4)在开头写入"bathome"
   在结尾写入"verymuch"
5)新文本另存,且文件名=原文件名+当前日期(如a20141007.txt)

改后新文本内容如下:
bathome
gan555
  xiexie
ge12348gd
wei789f2
bang8856
mang44df5
thank
you
verymuch
作者: CrLf    时间: 2014-10-7 20:17

如果可以用第三方的话,这用 sed 多容易...
作者: syqh2010    时间: 2014-10-7 21:27

回复 2# CrLf
那就也说下用sed怎么用吧,说不定用的着。
另请问,sed在公司电脑上能不能装?谢谢!
作者: CrLf    时间: 2014-10-7 23:06

本帖最后由 CrLf 于 2014-10-7 23:53 编辑

回复 3# syqh2010


    sed 约等于绿色软件,有权限的话扔 system32 目录下即可全局调用,要是没权限,和批处理放在同一个目录下也行
  1. @echo off
  2. set "原文件名=a.txt"
  3. for /f "tokens=1-3 delims=-/\:. " %%a in ("%date%") do set "当前日期=%%a%%b%%c"
  4. for %%a in ("%原文件名%") do set "新文件名=%%~na%当前日期%%%~xa"
  5. sed -r -e "1ibathome" -e "/^man/athank" -e "/^wei/abang8856" -e "/^xx|^non/d" -e "/^  gan/s/.*/gan555/" -e "/^xie/s/.*/xiexie/" -e "$averymuch" "%原文件名%">"%新文件名%"
复制代码

作者: syqh2010    时间: 2014-10-8 21:37

回复 4# CrLf

我累个去,果然牛拜!
在这里看到有sed,但不知怎么用,经兄台指教放在目录下果然能用!谢了!
作者: syqh2010    时间: 2014-10-8 22:34

回复 4# CrLf

很好用,早知就不用纯批了。
有一点,少了空格,

要求                    实际输出
bathome             bathome   
gan555               gan555
xiexie                xiexie
ge12348gd         ge12348gd
wei789f2            wei789f2
bang8856           bang8856
mang44df5         mang44df5
thank                  thank
you                     you
verymuch            verymuch
作者: Batcher    时间: 2014-10-8 22:39

回复 6# syqh2010


-e "/^xie/s/.*/  xiexie/"
你自己加上空格就行啦
作者: syqh2010    时间: 2014-10-9 08:53

回复 7# Batcher
谢谢!可以了!
但还想再问一下,如果在以"wei"开头的下一行这写入"    bang8856"(带空格)怎么写?
作者: Batcher    时间: 2014-10-9 09:11

回复 8# syqh2010


-e "s/^wei.*/&\n    bang8856/"
作者: syqh2010    时间: 2014-10-9 09:22

回复 9# Batcher
谢谢!成功!




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