The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Вопрос по sed"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

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

grep Kukudabra ffile | sed .....

Спс.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Вопрос по sed"  +/
Сообщение от phpcoder email(ok) on 29-Ноя-10, 12:39 
tail -c 4 ffile

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

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

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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Вопрос по sed"  +/
Сообщение от phpcoder email(ok) on 29-Ноя-10, 13:46 
P.S. Да, как-то не полностью прочитал задание :( Но ответ, в принципе, рядом.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

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

!!! Спасибо.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Вопрос по sed"  +/
Сообщение от phpcoder email(ok) on 08-Дек-10, 15:37 
>> Ну вы блин и кудесники
>>> 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
ма%


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Вопрос по sed"  +/
Сообщение от рома on 08-Дек-10, 16:16 
> Я же уже писал, что "Вот только это не будет работать с
> русским текстом в локали UTF-8.":

я же уже извинился.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

10. "Вопрос по sed"  +/
Сообщение от JloT (ok) on 24-Авг-11, 14:47 

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

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

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

Спасибо!

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Вопрос по sed"  +1 +/
Сообщение от phpcoder email(ok) on 24-Авг-11, 14:54 
> Например:
> было 445eb518e0954db0b888e654c1ff9215
> стало 445/445eb518e0954db0b888e654c1ff9215

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Вопрос по sed"  +/
Сообщение от JloT (ok) on 24-Авг-11, 15:28 
>> Например:
>> было 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

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Вопрос по sed"  +/
Сообщение от JloT (ok) on 25-Авг-11, 10:06 
>>> Например:
>>> было 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/

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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