使用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.dmgsed命令提取

答案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"

相关内容