Board logo

标题: [文本处理] 批处理怎么删除指定字符串所在行和指定字符串A,B之间的内容? [打印本页]

作者: cs_t    时间: 2010-3-20 10:23     标题: 批处理怎么删除指定字符串所在行和指定字符串A,B之间的内容?

怎么删除指定字符串行,删除指定字符串A,B之间的行?谢谢

问题1:用纯批处理,或者gawk或者SED怎么删除当前文件夹所有文本文件(*.HTML)含有指定字符串的行?最好是可以把字符串从文本文件取得,这样方便编辑修改。

问题2:上面问题的升级版,所有文本文件(*.HTML)怎么删除指定字符串a-指定字符串b之间的所有内容(多行),a,b字符串能不能支持多行,能就最好了,多行的话用a.txt和b.txt输入

两问题都是直接改原来的文件,不输入到新文件


比如:

<meta name="MSSmartTagsPreventParsing" c />
<meta http-equiv="MSThemeCompatible" c />
<link rel="archives" title="批处理之家" href="http://www.bathome.net/archiver/" />
        <link rel="stylesheet" type="text/css" href="forumdata/cache/style_17.css" />
        <link rel="stylesheet" type="text/css" href="forumdata/cache/style_17_append.css" />
<script type="text/javascript">var IMGDIR = 'images/default';var attackevasive = '0';var gid = 0;gid = parseInt('1');var fid = parseInt('5');var tid = parseInt('7371');</script>
<script src="include/javascript/common.js" type="text/javascript"></script>
<script src="include/javascript/menu.js" type="text/javascript"></script>
<script src="include/javascript/ajax.js" type="text/javascript"></script>
</head>


问题1:比如删除含有  <script src="include/javascript  字符串的行

问题2:比如删除 a字符串 <link rel="archives" title="  到B字符串parseInt('7371');</script> 之间所有内容,包含AB字符串,
ab字符串最好是多行的,分别从a.txt和b.txt中取得

[ 本帖最后由 cs_t 于 2010-3-20 19:57 编辑 ]
作者: cs_t    时间: 2010-3-20 10:25

这两个问题估计带有很大的普遍性意义,呵呵

两个重要的文本编辑功能。
作者: BatCoder    时间: 2010-3-20 11:31

答案1:
  1. sed -i "/YourString/d" *.txt
复制代码

作者: cs_t    时间: 2010-3-20 14:03

先谢过楼上的热心人但是代码好像不行啊,html有特殊字符的!
作者: sysplay    时间: 2010-3-20 17:09

字符串A,B能不能给出来,还有,这个两个字符串是不是单独一行?
作者: cs_t    时间: 2010-3-20 17:50

主要是批量编辑html文件用,所以都是一般HTML中的字符串。

问题1的字符串肯定是单独一行的

问题2的字符串ab如果能支持多行当然是最好的啦。
作者: BatCoder    时间: 2010-3-20 18:26     标题: 回复 4楼 的帖子

都有哪些特殊字符呢?
作者: cs_t    时间: 2010-3-20 19:28

主要是批量编辑html文件用,所以都是一般HTML中的字符串

呵呵  也没有很特殊的啦

比如:

<meta name="MSSmartTagsPreventParsing" c />
<meta http-equiv="MSThemeCompatible" c />
<link rel="archives" title="批处理之家" href="http://www.bathome.net/archiver/" />
        <link rel="stylesheet" type="text/css" href="forumdata/cache/style_17.css" />
        <link rel="stylesheet" type="text/css" href="forumdata/cache/style_17_append.css" />
<script type="text/javascript">var IMGDIR = 'images/default';var attackevasive = '0';var gid = 0;gid = parseInt('1');var fid = parseInt('5');var tid = parseInt('7371');</script>
<script src="include/javascript/common.js" type="text/javascript"></script>
<script src="include/javascript/menu.js" type="text/javascript"></script>
<script src="include/javascript/ajax.js" type="text/javascript"></script>
</head>


问题1:比如删除含有  <script src="include/javascript  字符串的行

问题2:比如删除 a字符串 <link rel="archives" title="  到B字符串parseInt('7371');</script> 之间所有内容,包含AB字符串,
ab字符串最好是多行的,分别从a.txt和b.txt中取得

[ 本帖最后由 cs_t 于 2010-3-20 19:30 编辑 ]
作者: BatCoder    时间: 2010-3-20 19:43     标题: 回复 8楼 的帖子

  1. sed -i "/<script src=\"include\/javascript/d" *.html
复制代码

作者: cs_t    时间: 2010-3-20 19:54

还要对字符串进行改写啊?
作者: BatCoder    时间: 2010-3-20 20:04     标题: 回复 10楼 的帖子

特殊字符需要转义,BAT/VBS/Shell/Perl等大部分脚本都是如此。
作者: cs_t    时间: 2010-3-20 20:12

这咋办?有没有好点的解决办法可以不用转义的?要是能直接从文件取得字符串内容不用再做修改就好了
作者: BatCoder    时间: 2010-3-20 21:27     标题: 回复 12楼 的帖子

这个,真没有。
你想想,如果你亲自发明一种脚本,它总要给自己留几个关键字、保留字、特殊字符来实现指定的功能啊。
作者: cs_t    时间: 2010-3-20 22:41

估计得写专门的程序来对付这个了?呵呵
作者: BatCoder    时间: 2010-3-20 22:46     标题: 回复 14楼 的帖子

你准备用哪种语言来写?




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