The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вопрос по sed, !*! Jakov, 29-Ноя-10, 12:30  [смотреть все]
Hello all.
Можно ли при помощи sed (или sed+awk) вывести 4 последних буквы слова из файла.
Например:
Имеем файл (ffile) в нём слово Kukudabra
Результатом команды должно стать "abra".

grep Kukudabra ffile | sed .....

Спс.

  • Вопрос по sed, !*! phpcoder, 12:39 , 29-Ноя-10 (1)
    tail -c 4 ffile

    Вот только это не будет работать с русским текстом в локали UTF-8.

    Тогда предлагаю так:

    tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'


    • Вопрос по sed, !*! phpcoder, 13:46 , 29-Ноя-10 (3)
      P.S. Да, как-то не полностью прочитал задание :( Но ответ, в принципе, рядом.


    • Вопрос по sed, !*! Jakov, 18:12 , 29-Ноя-10 (4)
      Ну вы блин и кудесники
      > tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'

      !!! Спасибо.


      • Вопрос по sed, !*! рома, 15:35 , 08-Дек-10 (5)
        > Ну вы блин и кудесники
        >> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
        > !!! Спасибо.

        ну если использование tail-a все-таки допустимо, то
          tail -c 4 test.txt
        извините, что без sed-a

        • Вопрос по sed, !*! рома, 15:37 , 08-Дек-10 (6)
          >> Ну вы блин и кудесники
          >>> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
          >> !!! Спасибо.
          > ну если использование tail-a все-таки допустимо, то
          >   tail -c 4 test.txt
          > извините, что без sed-a

          пардон, повторился за предыдущим оратором.

        • Вопрос по sed, !*! phpcoder, 15:37 , 08-Дек-10 (7)
          >> Ну вы блин и кудесники
          >>> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
          >> !!! Спасибо.
          > ну если использование tail-a все-таки допустимо, то
          >   tail -c 4 test.txt
          > извините, что без sed-a

          Я же уже писал, что "Вот только это не будет работать с русским текстом в локали UTF-8.":

          coder@xxx ~ $ cat test.txt
          рома%
          coder@xxx ~ $ tail -c4 test.txt
          ма%


    • Вопрос по sed, !*! seeryoga, 18:58 , 16-Мрт-11 (9)
      > tail -c 4 ffile
      > Вот только это не будет работать с русским текстом в локали UTF-8.
      > Тогда предлагаю так:
      > tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'

      ну тогда уж лучше так:
      sed -nr '$s|.*(.{4})$|\1|p' test.txt

      (последние 4 символа, последней строки)

      • Вопрос по sed, !*! JloT, 14:47 , 24-Авг-11 (10)

        > ну тогда уж лучше так:
        > sed -nr '$s|.*(.{4})$|\1|p' test.txt
        > (последние 4 символа, последней строки)

        Здравствуйте!
        Скажите, а как из каждой строки первые три символа скопировать в ее начало и между добавленным и тем что было поставить символ "/"

        Например:
        было 445eb518e0954db0b888e654c1ff9215
        стало 445/445eb518e0954db0b888e654c1ff9215

        Спасибо!

        • Вопрос по sed, !*! phpcoder, 14:54 , 24-Авг-11 (11) +1
          > Например:
          > было 445eb518e0954db0b888e654c1ff9215
          > стало 445/445eb518e0954db0b888e654c1ff9215

          echo '445eb518e0954db0b888e654c1ff9215' | sed 's|^\(...\).\+|\1/\0|'

          • Вопрос по sed, !*! JloT, 15:28 , 24-Авг-11 (12)
            >> Например:
            >> было 445eb518e0954db0b888e654c1ff9215
            >> стало 445/445eb518e0954db0b888e654c1ff9215
            > echo '445eb518e0954db0b888e654c1ff9215' | sed 's|^\(...\).\+|\1/\0|'

            Спасибо!
            А где можно попроще про это прочитать или пояснить подробнее каждый символ (с регулярными выражениями не в ладах((?
            Мне вообще нужно к каждой такой строке еще впереди добавить команду "cat /array0/mmp/var/db/"
            а позади "/.meta | grep COMMENT= >> report.txt"
            Строк много... и у них разные символьные значения

            В итоге должно получиться:
            cat /array0/mmp/var/db/445/445eb518e0954db0b888e654c1ff9215/.meta | grep COMMENT= >> report.txt

            • Вопрос по sed, !*! JloT, 10:06 , 25-Авг-11 (13)
              >>> Например:
              >>> было 445eb518e0954db0b888e654c1ff9215
              >>> стало 445/445eb518e0954db0b888e654c1ff9215
              >> echo '445eb518e0954db0b888e654c1ff9215' | sed 's|^\(...\).\+|\1/\0|'
              > В итоге должно получиться:
              > cat /array0/mmp/var/db/445/445eb518e0954db0b888e654c1ff9215/.meta | grep COMMENT=
              > >> report.txt

              Получилось!
              s|^\(...\).\+|\1/\0|
              s/^/cat \/array0\/mmp\/var\/db\//
              s/$/\/.meta | grep COMMENT= >> report.txt/

  • Вопрос по sed, !*! Pahanivo, 12:40 , 29-Ноя-10 (2)
    > Hello all.
    > Можно ли при помощи sed (или sed+awk) вывести 4 последних буквы слова
    > из файла.
    > Например:
    > Имеем файл (ffile) в нём слово Kukudabra
    > Результатом команды должно стать "abra".
    > grep Kukudabra ffile | sed .....

    можно, зависит от того какое место слово занимает в строке
    > Спс.




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

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