Подскажите пожалуйста как можно вытащить в переменную bash из вот такого названия файла "base-6789-11.12.13_14.tar" число 6789, которое однозначно будет идти между двух дефисов? Длинна числа может меняться, но идёт оно всегда между двух дефисов. Пытался в очередной раз рыть sed и в очередной раз глаза лезут на лоб от его синтаксиса, если надо работать со сложными регэкспами .
Подскажите пожалуйста как можно вытащить в переменную bash из вот такого названия файла "base-6789-11.12.13_14.tar" число 6789, которое однозначно будет идти между двух дефисов? Длинна числа может меняться, но идёт оно всегда между двух дефисов. Пытался в очередной раз рыть sed и в очередной раз глаза лезут на лоб от его синтаксиса, если надо работать со сложными регэкспами .
можно и без sed:
echo base-6789-11.12.13_14.tar|cut -d"-" -f2
\+ - да, + - нет. POSIX Extended Regular Expressions (в отличие от POSIX Basic Regular Expressions) поддерживает +, ? и |. В GNU их аналоги впихнули и в базовые (только с бэкслэшем), но в расширенных они (без бэкслэшей) требуются стандартом.
PS: О. sash-kan, спасибо. Действительно, в sed поддержка ERE стандартом не требуется.
watashiwa_darede...
да что ж вы все такие прямо негнутые? (улыбка)
ну да, в posix написали, что sed-у положены только бэйсик-re, значит, ежели кто добавит те же posix-овские _не_-бэйсик-re, то это, конечно, _не_иначе_ как от лукавого из gnu· логично-логично·
ну да, в posix написали, что sed-у положены только бэйсик-re, значит, ежели кто добавит те же posix-овские _не_-бэйсик-re, то это, конечно, _не_иначе_ как от лукавого из gnu· логично-логично·
Это просто надо учитывать при написании переносимых скриптов. Хотя большинство своих личных скриптов я пишу с использованием гнутых расширений и даже частенько (о, ужас) для /bin/bash, а не для /bin/sh