У меня есть сценарий bash с именем test.sh
, который использует аргумент командной строки:
lynx -dump $1 > $name".txt"
Но мне нужно, чтобы имя создавалось из аргумента конкретными ключевыми словами в аргументе.
Примером является:
http://www.pcmag.com/article2/0,2817,2412941,00.asp
http://www.pcmag.com/article2/0,2817,2412919,00.asp
Обе являются двумя отдельными статьями, но разницу можно увидеть только в этих 12 символов. Как мне создать переменную из URL для этих 12 символов? Так что, когда я запускаю test.sh в Терминале:
./test.sh http://www.pcmag.com/article2/0,2817,2412941,00.asp
, текстовый файл сохраняется как 0,2817,2412941,00
?
Вы можете сделать это в awk следующим образом:
$ name=$(echo $1 | awk -F[/.] '{print $(NF-1)}')
$ echo $name
0,2817,2412941,00
Используя /
и .
в качестве разделителей, материал, который вы хотите, будет присутствовать в последнем, но одном поле, доступ к которому используя NF-1
Вы можете использовать команду basename
:
basename http://www.pcmag.com/article2/0,2817,2412919,00.asp ".asp"
, которая даст вам:
0,2817,2412919,00