Как получить строку между двумя использованиями специальных символов Shell?

Используйте одинарные кавычки за 9 001 M$, если Вы соответствуете точному значению.

if [[ "$H_OR_T" = 'M$9001' ]]; then
  ...
fi
3
11.06.2014, 23:43
3 ответа
$ expr /home/oracle/ggs/text.ext : '/home/\(.*\)/'
oracle/ggs

, который возвращает часть после /дома/ и до последнего /.

Другие возможные подходы, которые отвечают вашим требованиям:

$ echo /home/oracle/ggs/text.ext | cut -d/ -f3,4
oracle/ggs
$ echo /home/oracle/ggs/text.ext | cut -c 7-16
oracle/ggs
$ echo oracle/ggs
oracle/ggs
4
27.01.2020, 21:12

Для данного примера можно использовать awk:

echo "$string" | awk -F '/' '{printf "%s%s%s\n" ,$2,FS,$3}'

То же самое в Perl:

echo "$string" | perl -lanF '/' -E '$,="/";say @F[1,2]'
3
27.01.2020, 21:12

Бэш

IFS=/ read -ra a <<<'/home/oracle/ggs/text.ext' && 
(IFS=/; printf '%s\n' "${a[*]:2:2}") 
oracle/ggs
0
27.01.2020, 21:12

Теги

Похожие вопросы