2013-03-20 3 views
0

XML 태그가 포함 된 파일이 있습니다. 각 줄에는 루트 요소와 몇 개의 하위 요소가 있습니다. 구조는 다음과 유사합니다.XML 태그 내의 패턴과 일치하는 텍스트 검색

<document><title>some title1</title><abstract>Some abstract1</abstract></document> 
<document><title>some title2</title><abstract>Some abstract2</abstract></document> 
<document><title>some title3</title><abstract>Some abstract3</abstract></document> 
<document><title>some title4</title><abstract>Some abstract4</abstract></document> 

이제 태그에 특정 단어가 들어있는 모든 줄을 찾아야합니다. 예 : <abstract> 태그 안에 abstract1을 포함하는 모든 행을 가져옵니다.

grep, awk 또는 sed에서 수행하는 방법은 무엇입니까?

+0

무엇을 일치시킬 수 있습니까? '초록 1 '? – perreal

+0

예, 'abstract1'과 같은 것이지만, 태그 안에 존재해야합니다. – Sudar

+0

[이 유명한 질문] (http://stackoverflow.com/questions/1732348/regex-match-open- tags-except-xhtml-self-contained-tags)가 아마도 순서대로 존재할 것입니다. –

답변

3

나오지 사용 :

sed -n '/<abstract>[^<]*abstract1/p' input 
1

업데이트 :

grep -nir "<abstract>.*word.*</abstract>" filename 
+0

이렇게하면 "내 말"이 들어있는 모든 줄이 나옵니다. 하지만 과 같은 특정 태그 안에 "your word"가 포함 된 줄만 찾고 싶습니다. – Sudar

+0

업데이트 된 코드가 작동합니다. 그러나 나는 이미 다른 대답을 받아 들였다. 그래서 나는 단지 upvote 할 수 있었다. – Sudar