Вы можете извлечь строку с помощью sed
:
sed 's/.*-\([^-]*\)\.html.*/\1/' <<< "https://www.wayfair.ca/appliances/pdp/agua-canada-30-500-cfm-ducted-wall-mount-range-hood-agcd1041.html?piid=47570655"
Если у вас есть все строки в файле, вы можете итерировать по нему:
while read line
do
variable=$(sed 's/.*-\([^-]*\)\.html.*/\1/' <<< $line)
# ... use the value from $variable
done < /path/to/file
sed
сценарий - это замена , где:
.*-\([^-]*\)\.html.*
- это шаблон \1
- это замена
шаблон написан так, что он захватывает любую последовательность не дефисных символов, то есть [^-]*
, заключенную между символом переноса -
и строкой .html
. Точечный символ экранируется для целей регулярных выражений, следовательно, шаблон \.html
. Ведущий рекламный ролик .*
должен убедиться, что все, что находится до дефиса и после html, также захвачено, иначе они появятся в выходных данных.