Làm cách nào tôi có thể sử dụng awk để trích xuất URL từ tệp HTML?


8

Tôi có một tệp HTML với javascript và CSS trong nguồn. Được liệt kê trong JS là một loạt các URL được nhúng với dữ liệu meta khác. Tôi muốn sử dụng awk để trích xuất các URL (tất cả được đặt trong dấu ngoặc kép với tiền tố http: //) và kết xuất các url vào thiết bị xuất chuẩn. Nhưng tôi không biết sử dụng awk, nhưng dường như nó là công cụ để sử dụng.

{
title: "Dsssat",
artist: "cxpl djij awsoj e",
mp3: "http://somesite.com/seal/dsssat.mp3",
},

Câu trả lời:


8

Bạn có thể sử dụng grep. Để bao gồm các dấu ngoặc kép:

grep -o '"http://[^"]*"' myfile.html

Để loại trừ dấu ngoặc kép:

grep -o 'http://[^"]*' myfile.html

Biên tập

Bạn có thể muốn thực hiện thêm một số bộ lọc để đảm bảo rằng bạn chỉ khớp các URL trong các đối tượng JavaScript:

grep -o 'mp3: "http://[^"]*"' myfile.html | grep -o '"http://[^"]*"'

grep -o 'mp3: "http://[^"]*"' myfile.html | grep -o 'http://[^"]*'

9

Tại sao nên dùng awk? sedtốt hơn ở đây:

sed -ne 's/.*\(http[^"]*\).*/\1/p' < foo.js

awk = thường được sử dụng làm công cụ trích xuất dữ liệu sed = trình chỉnh sửa luồng, một phép chuyển đổi được áp dụng
Ronaldo Nascimento

Bây giờ, làm thế nào để tôi sử dụng curl để lấy từng cái?
Ronaldo Nascimento

1
sed -ne 's /.* (http [^ "] *). * / \ 1 / p' <foo.js | xargs curl
Dennis Kaarsemaker

2
@RonaldoNascimento Lưu ý rằng điều này chỉ trích xuất URL cuối cùng của mỗi dòng. Điều này có thể hoặc không quan trọng tùy thuộc vào định dạng tệp của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

1
Điều đó phụ thuộc vào những gì bạn muốn làm. Nếu bạn muốn học kịch bản trên linux, thì có: tập trung vào các ngôn ngữ như perl và python. sed và awk là tốt cho oneliners nhưng không phải cho các nhiệm vụ lớn hơn.
Dennis Kaarsemaker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.