sed 명령을 사용하여 데이터 구문 분석

sed 명령을 사용하여 데이터 구문 분석

내 결과는 다음과 같습니다.

   <li><a href="/intl/id/download/">Bahasa Indonesia</a></li>
                    <li><a href="/intl/ms/download/">Bahasa Melayu</a></li>
                    <li><a href="/intl/da/download/">Dansk</a></li>
                    <li><a href="/intl/de/download/">Deutsch</a></li>
                    <li><a href="/intl/en/download/">English (US)</a></li>
                    <li><a href="/intl/es/download/">Español</a></li>
                    <li><a href="/intl/es-latam/download/">Español (América Latina)</a></li>
                    <li><a href="/intl/fr/download/">Français</a></li>
                    <li><a href="/intl/it/download/">Italiano</a></li>
                    <li><a href="/intl/nl/download/">Nederlands</a></li>
                    <li><a href="/intl/pl/download/">Polski</a></li>
                    <li><a href="/intl/pt-br/download/">Português (Brasil)</a></li>
                    <li><a href="/intl/pt/download/">Português (Portugal)</a></li>
                    <li><a href="/intl/fi/download/">Suomi</a></li>
                    <li><a href="/intl/sv/download/">Svenska</a></li>
                    <li><a href="/intl/vi/download/">Tiếng Việt</a></li>
                    <li><a href="/intl/tr/download/">Türkçe</a></li>
                    <li><a href="/intl/ru/download/">Русский</a></li>
                    <li><a href="/intl/ar/download/">العربية</a></li>
                    <li><a href="/intl/th/download/">ภาษาไทย</a></li>
                    <li><a href="/intl/ko/download/">한국어</a></li>
                    <li><a href="/intl/zh-cn/download/">中文(简体)</a></li>
                    <li><a href="/intl/zh-tw/download/">中文(繁體)</a></li>
                    <li><a href="/intl/jp/download/">日本語</a></li>
        If your download didn’t start, <a href="https://cdn1.evernote.com/mac-smd/public/Evernote_RELEASE_7.1_456448.dmg">click here</a>.<br>
100 24789  100 24789    0     0  14560      0  0:00:01  0:00:01 --:--:-- 14564
              <li><a href="/get-started">Getting started</a></li>
              <li><a href="/basic">Basic</a></li>
              <li><a href="/premium">Premium</a></li>
              <li><a href="/business">Features</a></li>
              <li><a href="/business/spaces">Spaces<span class="new">New!</span></a></li>
              <li><a href="/business/use-cases">Use cases</a></li>
              <li><a href="/business/customer-stories">Customer stories</a></li>
              <li><a href="/business/contact">Contact sales</a></li>
              <li><a href="http://blog.evernote.com/">Blog</a></li>
              <li><a href="/community">Community</a></li>

https://cdn1.evernote.com/mac-smd/public/Evernote_RELEASE_7.1_456448.dmg명령 으로 만 sed추출 하고 싶습니다

답변1

sed등은 XML/HTML 데이터를 처리하는 데 적합한 도구가 아닙니다.
적절한 XML/HTML 파서를 사용하세요.xmllint또는xmlstarlet.

그리고xmllint당신은 이렇게 할 것입니다 :

xmllint --html --xpath 'string(//a[text()="click here"]/@href)' input.html

산출:

https://cdn1.evernote.com/mac-smd/public/Evernote_RELEASE_7.1_456448.dmg

  • string(//a[text()="click here"]/@href)- 중추적a텍스트 값의 레이블을 선택 click here하고 href해당 속성의 문자열 표현을 가져오는 표현식

답변2

당신 이 sed원하는 것:

sed -n '/cdn1/p' "$YOUR_FILE"| sed 's/^.*\(https.*dmg\).*/\1/g'

또는 더 짧게:

sed -n 's/^.*\(https.*dmg\).*/\1/p' "$YOUR_FILE"
sed -n 's/^.*\(https.*\.[a-z]\{2,3\}\).*/\1/p' "$YOUR_FILE"
sed -n 's/^.*\(https\?.*cdn1.*\.[a-z]\{2,3\}\).*/\1/p' "$YOUR_FILE"

관련 정보