LINUX.ORG.RU

как распарсить строку в скрипте


0

0

Коллеги, подскажите как лучше распарить строку в скрипте. Есть путь к файлу вида /home/user/docs/document.xml Надо в скрипте выделить имя файла document.xml Название папки docs И полный путь без имени файла /home/user/docs

Что то я ничего подходящего найти не могу :(


echo "/home/usr/docs/document.xml" | rev | cut -f1 -d'/' | rev
echo "/home/usr/docs/document.xml" | rev | cut -f2 -d'/' | rev
echo "/home/usr/docs/document.xml" | rev | cut -f2- -d'/' | rev

facelift
()

IFS='/';for i in $(echo "/home/usr/docs/document.xml); do echo $i; done

facelift
()
Ответ на: комментарий от dvalov

Куча их. Лично я сейчас читаю Кернигана. Но там наверно будет сложновато. Начинал я не с нее. Начинал я вот с этих двух. И еще их читаю до сих пор.

http://www.books.ru/shop/books/8749
http://www.books.ru/shop/books/490098
http://www.books.ru/shop/books/82361

facelift
()
Ответ на: комментарий от facelift

а если путь с пробелом - уже не работает Например вот так

echo "/home/usr/docs/my\ document.xml" | rev | cut -f1 -d'/' | rev

dvalov
() автор топика
Ответ на: комментарий от lodin

Точно

dirname "/home/usr/docs/document.xml"
dirname "$(dirname "/home/usr/docs/documents.xml")"
basename "$(dirname "/home/usr/docs/documents.xml")"

facelift
()
Ответ на: комментарий от dvalov

>Может есть какие книжки по написанию скриптов?

Есть, это книжки по перлу))

golodranez ★★★★
()
Ответ на: комментарий от facelift

С basename все работает, даже когда имя с пробелом. Там проблема в другом.
Есть файл в котором список файлов записан скрипт из файла их читает и потом в цикле обрабатывает
Сделано вот так:
for i in `cat filename`
do
    echo "$i"
#    FileName=`basename  $i`-`date +%Y%m%_d`.tar.bz2
#    echo FileName=$FileName
#    tar -cO $i | bzip2 -c  > $Path/$FileName &
done

Так вот уже при чтение в $i строчка с пробелом разбита на две и обрабатывается в два прохода цикла

dvalov
() автор топика
Ответ на: комментарий от dvalov

cat file | while read i; do
...
done

`cat file` создаст проблемы, если большой файл, кстати.

lodin ★★★★
()
Ответ на: комментарий от GuttaLinux8

>открываешь /etc в любом недебиановском дистрибутиве

Разработчики debian настолько суровы, что пишут скрипты сразу на C?

lodin ★★★★
()
Ответ на: комментарий от dvalov

>Может есть какие книжки по написанию скриптов?

Advancend Bash Scripting

говорят что дае в репах есть, сам не проверял качал с веба

z01
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.