URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8938
[ Назад ]

Исходное сообщение
"Вопрос по sed"

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

grep Kukudabra ffile | sed .....

Спс.


Содержание

Сообщения в этом обсуждении
"Вопрос по sed"
Отправлено phpcoder , 29-Ноя-10 12:39 
tail -c 4 ffile

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

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

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



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



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

!!! Спасибо.



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

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


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

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


"Вопрос по sed"
Отправлено phpcoder , 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
ма%



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

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


"Вопрос по sed"
Отправлено seeryoga , 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 символа, последней строки)


"Вопрос по sed"
Отправлено JloT , 24-Авг-11 14:47 

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

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

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

Спасибо!


"Вопрос по sed"
Отправлено phpcoder , 24-Авг-11 14:54 
> Например:
> было 445eb518e0954db0b888e654c1ff9215
> стало 445/445eb518e0954db0b888e654c1ff9215

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


"Вопрос по sed"
Отправлено JloT , 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


"Вопрос по sed"
Отправлено JloT , 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/


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

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