The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как в sh FreeBSD выделить из строки  несколько символов?, !*! fly, 15-Июл-09, 15:32  [смотреть все]
Как из строки к,примеру "имяфайла.txt" ,выделить подстроку "имяфайла"(без ".txt")и поместить ее в переменную?
  • Как в 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 позиксвей!, !*! 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. Учите матчасть




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру