На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Помогите разобраться с Vi
    Доброго времени суток!
    Подскажите пожайлуста, как можно вставить строку в текст без исспользования sed или awk. Имеется скрипт, который ищет середину документа, и именно там вставляет строку.
    ExpandedWrap disabled
      #!bin/bash/
       
      LINE="Blah, blah"
      DESTINATION=tongue_twister
      LINE_COUNT=$(wc -l<$DESTINATION)
      MOD=$(($LINE_COUNT % 2))
      INSERT_POINT=$((LINE_COUNT / 2))
      echo $INSERT_POINT
       
      if [ $MOD -eq 0 ]
      then
      vi +($INSERT_POINT) $DESTINATION :i $LINE
      #open document and insert text
      else
      #open document, open new line and insert text
      fi



    это кончно ищет нужную линию, но при этом открыват радактор и ничего не вставляет.
    Прочитала все что нашла по vi, но нигде нет информации о том как радактировать текст из скрипта.... :'(

    Заранее спасибо за любые советы или помощь
      man vi
      man ed - про команды

      я попробовал так:

      vi "+5a xxx" "+3a yyy" file

      сработала только последняя команда.
        К сожалению у меня ничего не работает.... отрывает документ, а пред этим выдет сообщение об ощибке....
        но все равно спасибо
          а почему такое неприятие sed и awk?
            Ну если чесно - это преподователи такое условие поставили.... :unsure: с sed или awk я бы справилась...
            уже начала просматривать документацию ex, но она вся привязана к vi...
              Додумалась как сделать через временные файлы, но это решение не очень "чистое".
              ExpandedWrap disabled
                #!/bin/bash/
                 
                LINE_COUNTER=$(wc -l<$DESTINATION)
                INSERT_LINE=$"Blah, blah, blah"
                DESTINATION=demo2
                COUNTER=1
                MOD=$((LINE_COUNTER%2))
                 
                if [ $MOD -eq 0 ]
                then
                getLine
                 
                else
                LINE_COUNTER=$((LINE_COUNTER+1))
                getLine
                fi
                 
                function getLine(){
                INSERT_POINT=$((LINE_COUNTER/2))
                while [ $LINE_COUNTER -ne 0 ]
                do
                read LINE
                SUB_COUNTER=$((LINE_COUNTER--))
                echo $((COUNTER++))\) $LINE >> temp
                if [ $LINE_COUNTER -eq $INSERT_POINT ]
                then
                echo $((COUNTER++))  $INSERT_LINE >> temp
                fi
                done < $DESTINATION
                }
                 
                cat temp > $DESTINATION | rm temp

              Пожайлуста, может кто подскажет еще какие-нибуть идеи?
              Спасибо
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0508 ]   [ 15 queries used ]   [ Generated: 20.05.24, 05:16 GMT ]