
HTMLファイルがあり、パターン間の文字列を抽出したいと思います。ファイルは次のようになります。
<span>aghahan.com</span>
<span>pouyamannequin.com</span>
範囲を含むドメイン名が必要です:aghahan.com、pouyamannequin.com
私は次のコマンドを試しました。
sed -e 's/>!\(.*\)>.com<\/span>/\1/' domain.txt
しかし、私は間違った結果を得ています。誰でも私を助けてくれてありがとう。
答え1
各行は<span>
次から始めて終了します</span>
。
sed 's|<span>\(.*\)</span>|\1|' domain.txt
awk
フィールド区切り文字を<
またはに設定し、3番目の列を印刷して>
これを行うこともできます。
awk -F '[<>]' '{print $3}' domain.txt
出力:
aghahan.com
pouyamannequin.com
これは最も簡単な方法で、行の末尾にスペースがある場合にも機能します。
答え2
そしてsed
sed 's/\(.*\)>\(.*\)<\(.*\)/\2/g' domain.txt
答え3
そして:python
BeautifulSoup
python -c '
from bs4 import BeautifulSoup
f = open("domain.txt", "r")
soup = BeautifulSoup(f.read(),"html.parser")
for span in soup.find_all("span"):
print(span.string)
'
単純な作業には少し余分なものがあるかもしれませんが、たとえば、次のような他のHTMLがある場合、より難しい作業ではよりうまく機能しやすくなります。
<span>
aghahan.com
</span>
<span>
pouyamannequin.com
</span>
答え4
awk -F ">" '{print $2}' filename| sed "s/<.*//g"
出力
aghahan.com
pouyamannequin.com