- Как в sh FreeBSD выделить из строки несколько символов?, аноним, 18:40 , 15-Июл-09 (1)
>Как из строки к,примеру "имяфайла.txt" ,выделить подстроку "имяфайла"(без ".txt")и поместить ее в >переменную? cut, sed, awk
- Как в sh FreeBSD выделить из строки несколько символов?, GR, 21:35 , 15-Июл-09 (3)
>Как из строки к,примеру "имяфайла.txt" ,выделить подстроку >"имяфайла"(без ".txt")и поместить ее в переменную? man basename $F=`basename имяфайла.txt .txt`
- настоящий FreeBSD позиксвей!, Andrey Mitrofanov, 09:15 , 16-Июл-09 (5)
WARNING! HATRED AND man sh AHEAD! PROCEED AT UR 0WN RISC!!!Я _точно_ уверен, что с BSD -- ВЕСЕЛО! Это из вас так позикссовместимость "прёт"?... Увидел вопрос - думаю, чего с крестьянами связываться, ответят же через 10 минут. Ан нет. Люди, ау! Ни один из вас не читал man sh своего FreeBSD?? Ссылочку дам, мне не сложно: http:/man.shtml?topic=sh&category=1&russian=1 Да, сложно, "нипарусски" и диплом о высшем ну никак не гарантирует умения учиться и читать... Но чтоб куча ответов и все не совсем... эээ... оптимальные?! Я был понсостью уверен, что искорчен bash-ем и _авнгарда_ вроде ${ parameter % word } в теме про саму! FreeBSD мне не простят, увидев два "необычных" ответа, проверил и увидел ${ parameter % word } в своиз man ash и man dash. Тут-то у меня и возник вопрос, а как с ${ parameter % word } в man sh от FreeBSD.... google... site:opennet.ru (Да! отдельное спасибо за размещение на сайте "миноритарных" man-систем - FreeBSD, Solaris... забавнейшее чтиво, местами.) Ба! так вот оно ж, туточки!! ${ parameter % word } А вы basename, sed... Perl с питоном и жаввой разве ещё не приплели. var="text.txt" var2="${var%.txt}" echo "$var2.html"
- настоящий FreeBSD позиксвей!, fly, 10:01 , 16-Июл-09 (6)
Народ, это я так,примерчик бросила.Мне вообще нужно от строчной переменной "7898798qweer" отрезать несколько символов,начиная с какой нибудь позиции.У bash посмотрела $(myvar:4:3),но у нас не стоит bash,есть токо sh .Как такое же сделать под sh?Помогите,пж,ничего не получается.
- настоящий FreeBSD позиксвей!, fly, 11:15 , 16-Июл-09 (7)
К примеру, ff="123.001dsa" , мне нужно как то получить из этой переменной первые 6 символов.Как это сделаь?
- настоящий FreeBSD позиксвей!, Pikador, 11:46 , 16-Июл-09 (8)
- настоящий FreeBSD позиксвей!, fly, 12:07 , 16-Июл-09 (9)
Спасибо,конечно,но я там ничего не нашла.А помочь ,значит, слабо начинающей?Все когда-то первый раз начинали и уйму времени на все это тратили.Жалко знаниями делится?или просто сами не знаете?
- настоящий FreeBSD позиксвей!, phpcoder, 12:48 , 16-Июл-09 (11)
>К примеру, ff="123.001dsa" , мне нужно как то получить из этой переменной >первые 6 символов.Как это сделаь? coder@ubuntu ~ $ expr substr '123.001dsa' 1 6 123.00 Вот только зуб не дам, что это сработает во FreeBSD В таком случае, можно использовать awk: coder@ubuntu ~ $ echo '123.001dsa' | awk '{print substr($0, 1, 6)}' 123.00 или sed: coder@ubuntu ~ $ echo '123.001dsa' | sed 's|^\(.\{6\}\).*|\1|' 123.00 или perl/python/etc
- настоящий FreeBSD позиксвей!, phpcoder, 12:41 , 16-Июл-09 (10)
>так вот оно ж, туточки!! > ${ parameter % word } >А вы basename, sed... Вариант с basename более читаем IMHO, чем эти шельные ${} инструкции.
- настоящий FreeBSD позиксвей!, fly, 14:00 , 16-Июл-09 (12)
написала echo '123.001dsa'|awk'{print substr($0, 1, 6)}' Ругается,по сле awk... пишет not found
- настоящий FreeBSD позиксвей!, allez, 16:18 , 16-Июл-09 (13)
>написала >echo '123.001dsa'|awk'{print substr($0, 1, 6)}' >Ругается,по сле awk... пишет not found А в выполненной вами команде после "awk" тоже нет пробела? Если его нет, то должно получиться что-то вроде этого:
$ echo '123.001dsa'|awk'{print substr($0, 1, 6)}' bash: awk{print substr($0, 1, 6)}: команда не найдена bash: echo: ошибка записи: Обрыв канала Что, в общем-то, вполне понятно: команда awk{print substr($0, 1, 6)} вряд ли существует. ;-) Если же пробел поставить, то конструкция отрабатывает нормально:
$ echo '123.001dsa' | awk '{print substr($0, 1, 6)}' 123.00
- настоящий FreeBSD позиксвей!, Warhead Wardick, 21:13 , 16-Июл-09 (14)
>WARNING! HATRED AND man sh AHEAD! PROCEED AT UR 0WN RISC!!! > ${ parameter % word } Андрюша ты чего так возбудился то? Вопрошающей в первые пять секунд рассказали о basename. Ну а потом пошли бантики что я мол имела в виду совсем другое ... "Или давайте лучше я перефразирую вопрос! Где в Москве можно купить приличную бижутерию?"(С)Большая разница. А вообще рекомендую впялить http://www.freebsd.org/cgi/man.cgi в закладки. Для такого рода исследований - самое оно :)
Как то так.
- виноват-с. исправлюсь. хотя...., Andrey Mitrofanov, 10:01 , 17-Июл-09 (15) +2
>Андрюша ты чего так возбудился то? Вопрошающей в первые пять секунд рассказали >о basename. Про этот basename раз в неделю рассказывают - несколько раздражает. В частности и использование двух процессов и пайпов для того, что "шифруется" одним ин-лайн выражением шелл. ... Ну, не сдержал "порыв", да. А давайте напишем --- "Advanced FreeBSD sh scritping guide" (краткое издание): 1. Ответ на любой вопрос "как мне во FreeBSD шелл ..." -- есть в man sh[ссылка-^выше]. 1.1. Просмотреть, запомнить, отработать навыки использования встроенных -- типов данных, объектов (окружение, переменные, процессы, массивы, "фоновые" задания, определение функций, и т.п.), функций для работы с ними (=разнообразие и систематизация встроенных команд и конструкций). 1.99. Ответ на любой вопрос есть в п.1, ответы на другие _есть_ в следующих. 2. Для [не описанной п.1] обработки данных на шеле _надо_ использовать програмы-фильтры. См. gnu coreutils, awk (gawk,nawk,mawk...), sed (+?gsed), и т.д. вплоть до однострочников или около того на perl.(Да, man sh не достаточно для многих задач.) 2.0.1. sh как среда объединения задач в большей степени, чем [?замкнутый] язык программирования. (TAOUP) 2.1. Регулярные регулярные регулярные регулярные выражения выражения выражения выражения.[ссылки-^выше] 3. Для использования (интеграции/управления потоком данных) програм-фильтров _надо_ [пере]осмыслить конструкции из п.1 - конвейеры, перенаправления, субшелы и пр. 3.1. Да, просенькие фильтры можно писать на самом шеле. (|while read var; do ...) 4. Всё укра^Wпридумано до нас - не надо самому ничего "придумывать", главное найти, где почитать и уты^Wнаучиться. (Чужие скрипты, "Adv.BASH scripting guide", ещё чужие скрипты, _читать_ архивы форумов/рассылок.) 4.0.1. То, что не придумано до - придумать во время. Осторожно! 4.1. Осмыслить преобретённый опыт работы с и использования -- определить, какие задачи боьше походят для, какие задачи - меньше. (hint: TAOUP) 4.99. Повторять в процессе _всё_, начиная с п.1 ! 5. Над шелом, горизонты шире: какие полезные прогрмы м.б.использованы в, расширяя его ещё более другими функциями. (gnu screen, ещё раз - coreutils (каждый раз что-то новое!), psmisc?работа с процессам) 6. Позикс шел, фри-бсд-шелизмы, обязательный курс молодого борца с башшизмами и линукс-кернелизмами, стрельба из базуки и метание грязных гранат. 6.1. Краткий курс пар^Wистории: позикс, юникс(тм). AT&T против USC Berkeley - Unix против BSD? 6.2. Свобода религии: GNU и GPL -- любовь или ненависть? "Я это сделал!"(тм) -- Митрофанов А.Б., сим передаю текст выше в общественное достояние (=public domain)
- виноват-с. исправлюсь. хотя...., fly, 19:26 , 17-Июл-09 (16)
Аlles, БОЛЬШОЕ СПАСИБО.Все получилось.Сисадмин уехал в отпуск..срочно нужно было скрипт написать,вот и приходится самой разбираться.Видно не все линуксоиды злые...трудно им наверное,вот и злые...::-))
- виноват-с. исправлюсь. хотя...., allez, 10:00 , 19-Июл-09 (18)
>Аlles, БОЛЬШОЕ СПАСИБО.Все получилось.Сисадмин уехал в отпуск..срочно нужно было скрипт написать,вот и >приходится самой разбираться.Видно не все линуксоиды злые...трудно им наверное,вот и злые...::-)) Да завсегда пожалуйста. :-) Уважаемая fly, Андрей Митрофанов и Warhead Wardick "ополчились" вовсе не на Вас. По крайней мере, у меня сложилось именно такое впечатление.
- виноват-с. исправлюсь. хотя...., Warhead Wardick, 19:59 , 17-Июл-09 (17)
Написать такой труд было бы здорово, но! Левой задней ногой делать не хотелось бы, а качественное изложение - есть большой труд.Ну и в общем - ты их хочешь _научить_! Не quick'n'dirty а системно и последовательно ... Научить тех кого не смогли\не захотели научить в школе \ институте \ универе \ на работе ... Возникают ведь вопросы: - а хотят ли они сами учиться? (в свете вышеизложенного - хрена с два!) - а оно мне надо? СССР кончился - теперь каждый сам за себя :( ... - будешь в канадии - дай знать, возьму хорошего вискаря и пожарю шашлыков. Ну должна же быть хоть какая то награда тянущим лямку без единого шанса :)
- виноват-с. исправлюсь. хотя...., az, 23:49 , 28-Июл-09 (19)
взято с http://lib.ru/unixhelp/unixshell.txt 5_3. Команда ena Команда ena позволяет получить части полного имени файла. Первый аргумент - флаг, второй - имя файла. Команда различает следующие флаги: -n - имя файла без расширения -f - имя файла с расширением -e - расширение -d - имя директории -p - если имя файла начинается с . или .. , то эти символы выделяются из имени Ниже приводится текст программы ena, хранящийся в /util/ena. # Get part of pathname case $1 in -n ) expr $2 : '.*/\(.*\)[.].*' \| $2 : '\(.*\)[.].*' \| $2 ;; -f ) expr $2 : '.*/\(.*\)' \| $2 ;; -e ) expr $2 : '.*\([.][^./]*\)' \| ' ' ;; -d ) expr $2 : '\(.*\)/.*' \| $2 ;; -p ) expr $2 : '\([.]\)/.*' \| $2 : '\([.][.]\)/.*' \| ' ' ;; * ) echo "error: unknown part of pathname $1" exit 2 ;; esac PS. Учите матчасть
|