2012-10-18 4 views
0

파이썬에서 sed와 같은 작업을하는 것이 왜 그렇게 어려운가요?파이썬 sed가 작동하지 않음

cat temp$$ | sed '/ENTRY/d' | sed '/VERSION/d' > temp$$1 

다음 시도는 단순히 (대신 나는 화면으로 인쇄하고있어 파일에 쓰는) 작동하지 않습니다

70 for line in open("temp5027", 'r'): 
71  
72  if re.search("ENTRY|VERSION", line) != None: 
73   pass 
74  else: 
75   print line 

좌절 처음 파이썬 사용자를.

참고 : 아직 Python 2.4를 사용하고 있으므로 "지원"이 없습니다.

+2

"작동하지 않는다"는 것은 무엇을 의미합니까? – Vyktor

+0

re.search가 'None'을 반환 한 것과 일치하지 않는 행을 다시 인쇄하는 것은 의도적입니까? – halex

+0

예. 그것은 의도적 인 것입니다. 정규식을 필터로 사용하고 있습니다. – Figo

답변

4

쓰기

sed 사용을 개선 현대 파이썬

import re 

with open("in.txt") as i, open("out.txt", "w") as o: 
    for line in i: 
     if re.search("ENTRY|VERSION", line): 
      o.write(line) 

보너스로 파일에 기록

import re i = open("in.txt") o = open("out.txt", "w") for line in i: if re.search("ENTRY|VERSION", line): o.write(line) o.close() i.close() 

파이썬 2.4

와 파일입니다.

$ sed -e '/ENTRY/d' -e '/VERSION/d' <in.txt> out.txt 
+0

죄송합니다. 서버에서 2.4 버전을 사용하고 있습니다. "no"와 (과) " – Figo

+0

보너스의 의견을 보내 주셔서 감사합니다! – Figo

+1

둘 다'open'이 같은'with'를 사용하면 여기에 의미가 있습니다. –