내가 왜 이것을 얻지 못하는지 잘 모르겠습니다. 나는 몇 시간 동안 내 명령을 검색하고 테스트했지만 아무데도 가지 못했습니다.
텍스트는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><result expand="changes,testResults,metadata,logEntries,plan,vcsRevisions,artifacts,comments,labels,jiraIssues" key="EP-ED-JOB1-174" state="Failed" lifeCycleState="Finished" number="174" ....
state="Failed"
부품을 꺼내고 싶을뿐입니다 state="Successful"
.
나는 이것의 백만 가지 변형을 시도했습니다.
sed '/state=".*"/p' htmlResponse.txt
그러나 괄호, 이스케이프 슬래시 등은 전체 텍스트 청크와 일치하는 것 같습니다. 내 정규식에 어떤 문제가 있습니까?
"정규식은 XML을 구문 분석 할만큼 충분히 강력하지 않기 때문에 적절한 XML 구문 분석기를 사용해야합니다"라는 필수 주석을 제쳐두고 두 가지 문제가 있습니다 sed
.
".*"
경기 "
이후 처음 부터 마지막까지 .
일치합니다."
sed
명령 은 정규식과 일치하는 경우 전체 행을/.../p
인쇄합니다 .빠르고 지저분한 HTML 스크래핑 셸 스크립트에 대해 제가 제안하는 두 가지가 있습니다.
"[^"]*"
"따옴표, 따옴표가 아닌 문자, 끝 따옴표"를 일치시키는 데 사용 합니다.grep -o
정규식과 일치하는 파일의 비트를 꺼내는 것이 훨씬 더 쉽습니다.따라서 다음과 같은 명령을 사용할 수 있습니다.
grep -o 'state="[^"]*"'
또는 정말로 sed를 사용해야 하는 경우 :
sed -n 's/.*\(state="[^"]*"\).*/\1/p'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다