2017-10-09 3 views
0

일부 XML 파일이 있는데 파이썬 (메모리 문제)의 CSV 파일로 구문 분석하기 전에 일부 사전 처리 작업을 수행하려고합니다. grep 정규 표현식이있는 행의 첫 번째 일치 만

내가

grep -Ei "<Title>.*abcd.* </Title>" 

는이 라인을 반환 할 경우, 그 제목 때문에 중복 제목 필드의

<Title> Project abcd </Title> <Id> xxxx</Id> <Group>xxxx</Group>... <Title> Project abcd </Title> 

같은 XML 파일에서 "ABCD"를 포함 뭔가를 grep으로하고 싶은 말은 "abcd"가 Id 또는 다른 관련이없는 필드에 우연히 포함되는 경우

grep을 사용하여 제목 필드에만 원하는 패턴이 포함 된 줄을 반환하는 방법이 있습니까?

답변

0

html/xml을 정규식으로 파싱하는 위험을 알아야합니다. 당신이 그것을해야 할 경우, 는 XML을 조작하는 올바른 방법으로 XML/HTML 파서입니다 사용

'<Title>[^<]*abcd[^<]*</Title>' 
+0

감사합니다. 이것이 내가 필요한 것입니다. 지금 당장. 나는 위험을 모르고 미래의 proj를 위해 xml 파서를 사용하는 방법을 배울 것입니다. – Kamisamaaaaa

0

시도/HTML 데이터 :

xmlstarlet 솔루션 :

xmlstarlet sel -t -c "//Title[contains(text(),"abcd")]" -n your.xml 

출력 (현재 입력) :

<Title> Project abcd </Title><Title> Project abcd </Title> 
+0

감사합니다.이 유용한 xml 파서를 알아두면 좋습니다. – Kamisamaaaaa