分页: 1 / 2

如何判断文本文件里是否含有特定字符串

发表于 : 2008-03-14 18:54
caike
又要求助各位了, 有一个文本文件a.txt, 有一些XML标签和其它文本的混合:

代码: 全选

title: test
<T1>
123
</T1>
Tag for T1 is 123
<T2>
321
</T2>
我要对这个文本进行处理, 不断的删除XML标签和它中间的内容, 一直到全部删除完为止. XML标签有一定的规律, <T数字>, 用正则表达式查找就行了.

请问要用什么命令来实现这个判断,grep, sed? 用最简单的方法来实现就可以了,不用获取标签之间的内容,只要判断有没有标签就行了.
谢谢.

Thanks for your help, actually the problem is not so difficult as you guys thought. My poor expression misleaded. Below is the solution I used(There is no Chinese input available in Lab, so I just post in English.):
----------------------------------solution begin----------------------------------------------------------------

代码: 全选

       #calcuate how many tags in the file
	tagsNumber=$(egrep -c '/*<T' source.txt)
	
       #do if there is tag in the file
	while [ $tagsNumer -gt 0 ]; do
	...... ....
       # I will remove one tag(in pair) each time, so re-calculate it
	tagsNumber=$(egrep -c '/*<T' source.txt)
	
	done #end of while loop

发表于 : 2008-03-14 18:55
BigSnake.NET
不断的删除XML标签和它中间的容易
?

发表于 : 2008-03-14 18:58
iblicf
应该用个样本举例,原来啥样,想弄啥样

发表于 : 2008-03-14 19:01
caike
BigSnake.NET 写了:
不断的删除XML标签和它中间的容易
?
Sorry,打错字了 :oops:

内容

发表于 : 2008-03-14 19:03
caike
iblicf 写了:应该用个样本举例,原来啥样,想弄啥样
完了, 英语没学好, 中文也说不好了.

其实我要实现的功能很简单, 就是判断a.txt里是否存在 "<T*>"这种字符串.

发表于 : 2008-03-14 19:06
BigSnake.NET
linux 下哪个正则工具有平衡组功能?..

发表于 : 2008-03-14 19:09
iblicf
什么叫平衡组功能? 判断闭合标签吧? 唉

发表于 : 2008-03-14 19:10
BigSnake.NET
iblicf 写了:什么叫平衡组功能? 判断闭合标签吧? 唉
就是递归匹配

发表于 : 2008-03-14 19:13
caike
BigSnake.NET 写了:linux 下哪个正则工具有平衡组功能?..
不用平衡, 只要判断开始标签就行了, 我删的时候是用sed来删的, 删除从<T*>开始,到</T*>结束中间的所有行, 所以只要存在<T*>, 就会存在结束标签</T*>.

我把问题说的太复杂了, 简化一下,
如何判断一个文件里是否存在"foo"这三个字符?

发表于 : 2008-03-14 19:18
iblicf
sed -n '/\<T1\>/,/\<\/T1\>/d' file

发表于 : 2008-03-14 19:22
BigSnake.NET
嵌套呢?

发表于 : 2008-03-14 19:24
iblicf
傻阿,,T1 T2 :)

发表于 : 2008-03-14 19:28
caike
iblicf 写了:sed -n '/\<T1\>/,/\<\/T1\>/d' file
请问这个if 要怎么写呢?

发表于 : 2008-03-14 19:30
BigSnake.NET
问一下楼主会不会出现<T1><T2>foo</T2></T1> 这样的...

发表于 : 2008-03-14 19:35
caike
BigSnake.NET 写了:问一下楼主会不会出现<T1><T2>foo</T2></T1> 这样的...
不会的, 不会出现嵌套的情况.