Хочу написать один bash-скриптец, да затык вышел. Подскажите, кто знает, пожалуйста!
Надо из полного пути к файлу (один из аргументов скрипта) выкусить имя без расширения.
Про basename в курсе, но как от расширения избавиться - не соображу.
[Ответ]
nickvgru 14:40 10.02.2006
Это можно сделать с помощью команды gawk.
Читайте man gawk. Или пришлите строку и что из нее нужно извлечь
[Ответ]
distantX 14:57 10.02.2006
nickvgru,
О, как быстро ответили, спасибо
есть какой-нибудь путь вида:
/Volumes/Media/бла-бла.../DJinfo.txt (возможно, *.log) или
/mnt/бла-бла.../DJinfo.txt
Так вот, это самое DJinfo в качестве строки мне и надо получить.
PS.
man по gawk зачту вечером в любом случае.
[Ответ]
nickvgru 07:34 13.02.2006
В скритпе нужно задать переменную например:
path_to_the_files=/Volumes/Media/бла-бла...
Затем переходим в соответствующий каталог
cd $path_to_the_files
Затем получаем список файлов в нужном виде (то есть без точки)
ls | gawk -F '.' '{print $1}'
[Ответ]
- оставить только последний элемент пути
P="${P##/*/}"
- удалить расширение
P="${P%%.*}"
(P это переменная изначально содержащая полный путь и имя файла, а в конце - имя файла без расширения)
[Ответ]
distantX 10:17 14.02.2006
nickvgru, maximk,
Поскольку gawk есть не во всех системах, а первый параметр скрипта ($1) у меня изначально содержит полный путь и имя файла, вчера сделал так:
basename $1 |awk -F '.' '{print $1}'
PS. Спасибо, maximk, за Ваш компактный способ.
[Ответ]
yuridichesky,
люто! По функциональности:"отсечь именно расширение" - идеально.
Спасибо.
PS. Я еще зеленый. Вот так навскидку даже проанализировать такую строку не могу.
man sed набирать мне еще рано: только-только в awk въезжаю [Ответ]
yuridichesky 12:55 16.02.2006
Сообщение от distantX:
yuridichesky,
люто! По функциональности:"отсечь именно расширение" - идеально.
Спасибо.
PS. Я еще зеленый. Вот так навскидку даже проанализировать такую строку не могу.
man sed набирать мне еще рано: только-только в awk въезжаю
Да не за что, рад, что помог.
А делает оно вот что. s:^.*/::
s -- substitute, т.е. заменить. s:что_меняем:на_что_меняем:, или s/что_меняем/на_что_меняем/
Итак, что меняем: от начала строки (^) любые символы (.*), заканчивающиеся '/' (/). На что меняем? На пусто.
Потом продолжаем обработку строки: s:\.[^.]*$::, т.е. меняем точку (\.), за которой следуют любые символы, кроме точки ([^.]*), которые завершаются концом строки ($) на пусто.