求助:文本文件匹配删除

sh/bash/dash/ksh/zsh等Shell脚本
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 求助:文本文件匹配删除

#16

帖子 fnan » 2012-02-15 21:25

josephyoung 写了:
fanhe 写了:不喜欢shell了,脚本现在都直接写 python
:em01 这个问题,带嵌套的,能写个python玩玩么?我也在学python中
#只要有算法,用什么都可以。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 求助:文本文件匹配删除

#17

帖子 fnan » 2012-02-15 23:06

kose3@kose3-desktop:~$ cat tmp2.py
#!/usr/bin/env python

import sys
delete=0

file_source = open(sys.argv[1])
for line in file_source.readlines():
if line.strip().startswith("ifneq ("): delete = delete + 1
if delete == 0: print line,
if line.strip() == "endif": delete = delete - 1
file_source.close
#极少写python,指正指正。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 求助:文本文件匹配删除

#18

帖子 fanhe » 2012-02-16 10:30

楼主你说清楚你的需求吧,我自己是用c 写过 c 的预处理算法的,这种跟c 的预处理差不多,嵌套的分支不是这么简单的
你至少需要一个条件栈,每遇到 ifneq 就添加一个条件,只有当栈里面的所有的条件都是真时,正在读取的文本才不被忽略
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

Re: 求助:文本文件匹配删除

#19

帖子 josephyoung » 2012-02-16 13:07

fnan 写了:kose3@kose3-desktop:~$ cat tmp2.py
#!/usr/bin/env python
import sys
delete=0
file_source = open(sys.argv[1])
for line in file_source.readlines():
if line.strip().startswith("ifneq ("): delete = delete + 1
if delete == 0: print line,
if line.strip() == "endif": delete = delete - 1
file_source.close
#极少写python,指正指正。
:em01 不错,帮你缩进下
[python]#!/usr/bin/env python
import sys
delete = 0
file_source = open(sys.argv[1])
for line in file_source:
if line.strip().startswith("ifneq ("):
delete +=1
if delete == 0:
print line,
if line.strip() == "endif":
delete -= 1
file_source.close()
[/python]
回复