标题: [文本处理] [已解决]批处理如何对文本内容增、删、改? [打印本页]
作者: 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 目录下即可全局调用,要是没权限,和批处理放在同一个目录下也行- @echo off
- set "原文件名=a.txt"
-
- for /f "tokens=1-3 delims=-/\:. " %%a in ("%date%") do set "当前日期=%%a%%b%%c"
- for %%a in ("%原文件名%") do set "新文件名=%%~na%当前日期%%%~xa"
-
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |