Как получить имена изображений с регулярным выражением, sed и grep из файла HTML - PullRequest
0 голосов
/ 02 ноября 2018

Я хотел бы записать имена изображений в html-файл, используя regex, grep и sed.

Это мой файл index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>TEST</title>
</head>
<body>
    <h1>Simple title</h1>
    <img src="cat.png" alt="nice cat"></img>
    <img src="carrot.jpg" alt="yumm"></img>
</body>
</html>

У меня есть следующее регулярное выражение:

/.*<img src="(.*?)" .*>.*/g

С этим я получил это на regexr.com с функцией замены в первой группе:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>TEST</title>
</head>
<body>
    <h1>Simple title</h1>
cat.png
carrot.jpg
</body>
</html>

Но как я могу получить только два имени файла? Я пытался использовать sed и grep / egrep, но безуспешно.

С помощью sed я попробовал следующее:

sed -e 's/.*<img .*src="(.*?)" .*>/\1/g' index.html  > pc_temp.txt

Но это дает мне ошибку:

sed: -e term # 1, character 31: invalid reference (\ 1) to the "s" command for RHS

Так что я сейчас потерян.

Есть идеи, как изменить мою команду или мое регулярное выражение, чтобы получить имена файлов?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Вы действительно усложняете себе задачу, пытаясь использовать сложное регулярное выражение и несколько инструментов. Каждый раз, когда вы решите использовать sed + grep, просто используйте вместо этого awk:

$ awk -F\" '/<img/{print $2}' file
cat.png
carrot.jpg
0 голосов
/ 02 ноября 2018
egrep -o '<img src="[^"]+"' index.html | cut -d\" -f2 > pc_temp.txt
...