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
필드 구분 기호를 <
또는 로 설정하고 세 번째 열을 인쇄하여 >
이를 수행 할 수도 있습니다.
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