找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32496|回复: 9

[文本处理] [已解决]批处理如何对文本内容增、删、改?

[复制链接]
发表于 2014-10-7 19:05:43 | 显示全部楼层 |阅读模式
本帖最后由 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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-10-7 20:17:42 | 显示全部楼层
如果可以用第三方的话,这用 sed 多容易...
 楼主| 发表于 2014-10-7 21:27:30 | 显示全部楼层
回复 2# CrLf
那就也说下用sed怎么用吧,说不定用的着。
另请问,sed在公司电脑上能不能装?谢谢!
发表于 2014-10-7 23:06:38 | 显示全部楼层
本帖最后由 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" "%原文件名%">"%新文件名%"
复制代码

评分

参与人数 1技术 +1 收起 理由
syqh2010 + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-10-8 21:37:57 | 显示全部楼层
回复 4# CrLf

我累个去,果然牛拜!
在这里看到有sed,但不知怎么用,经兄台指教放在目录下果然能用!谢了!
 楼主| 发表于 2014-10-8 22:34:59 | 显示全部楼层
回复 4# CrLf

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

要求                    实际输出
bathome             bathome   
gan555               gan555
xiexie                xiexie
ge12348gd         ge12348gd
wei789f2            wei789f2
bang8856           bang8856
mang44df5         mang44df5
thank                  thank
you                     you
verymuch            verymuch
发表于 2014-10-8 22:39:37 | 显示全部楼层
回复 6# syqh2010


-e "/^xie/s/.*/  xiexie/"
你自己加上空格就行啦
 楼主| 发表于 2014-10-9 08:53:26 | 显示全部楼层
回复 7# Batcher
谢谢!可以了!
但还想再问一下,如果在以"wei"开头的下一行这写入"    bang8856"(带空格)怎么写?
发表于 2014-10-9 09:11:09 | 显示全部楼层
回复 8# syqh2010


-e "s/^wei.*/&\n    bang8856/"
 楼主| 发表于 2014-10-9 09:22:32 | 显示全部楼层
回复 9# Batcher
谢谢!成功!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:31 , Processed in 0.021159 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表