2015-12-27 7 views
4

Я пытаюсь получить номер файла num23.txt, используя только одну переменную bash.Получить часть имени файла

[email protected]:~$ f=num23.txt 
[email protected]:~$ echo $f 
num23.txt 
[email protected]:~$ echo ${f%.txt} 
num23 
[email protected]:~$ echo ${f/num} 
23.txt 
[email protected]:~$ echo ${f/num%.txt} 
num23.txt 
[email protected]:~$ 

Я стараюсь использовать только % и / операторов. Как он мог изменить последнюю команду, чтобы получить только вывод 23?

ответ

3

Получить номер

Для вашего конкретного примера (если у вас есть только один подстроку, имеющий только цифры):

echo ${f//[^0-9]/} 

или

echo ${f//[^[:digit:]]/} 

Получить строку между префиксом и суффикс

Но если вы хотите, чтобы указать суффикс и префикс этой строки, у вас есть следующий вариант:

echo `basename ${f/num} .txt` 

потому что echo ${f/num%.txt} не работает должным образом и Bash не позволяет запускать что-то вроде этого echo ${${f/num}%.txt} ,

+0

thx, вот что я искал! – Andy

Смежные вопросы