Hello all.
Можно ли при помощи sed (или sed+awk) вывести 4 последних буквы слова из файла.
Например:
Имеем файл (ffile) в нём слово Kukudabra
Результатом команды должно стать "abra".grep Kukudabra ffile | sed .....
Спс.
tail -c 4 ffileВот только это не будет работать с русским текстом в локали UTF-8.
Тогда предлагаю так:
tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
P.S. Да, как-то не полностью прочитал задание :( Но ответ, в принципе, рядом.
Ну вы блин и кудесники
> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'!!! Спасибо.
> Ну вы блин и кудесники
>> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
> !!! Спасибо.ну если использование tail-a все-таки допустимо, то
tail -c 4 test.txt
извините, что без sed-a
>> Ну вы блин и кудесники
>>> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'
>> !!! Спасибо.
> ну если использование tail-a все-таки допустимо, то
> tail -c 4 test.txt
> извините, что без sed-aпардон, повторился за предыдущим оратором.
>> Ну вы блин и кудесники
>>> 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
ма%
> Я же уже писал, что "Вот только это не будет работать с
> русским текстом в локали UTF-8.":я же уже извинился.
> tail -c 4 ffile
> Вот только это не будет работать с русским текстом в локали UTF-8.
> Тогда предлагаю так:
> tail -1 test.txt | sed 's|.*\(.\{4\}\)$|\1|'ну тогда уж лучше так:
sed -nr '$s|.*(.{4})$|\1|p' test.txt(последние 4 символа, последней строки)
> ну тогда уж лучше так:
> sed -nr '$s|.*(.{4})$|\1|p' test.txt
> (последние 4 символа, последней строки)Здравствуйте!
Скажите, а как из каждой строки первые три символа скопировать в ее начало и между добавленным и тем что было поставить символ "/"Например:
было 445eb518e0954db0b888e654c1ff9215
стало 445/445eb518e0954db0b888e654c1ff9215Спасибо!
> Например:
> было 445eb518e0954db0b888e654c1ff9215
> стало 445/445eb518e0954db0b888e654c1ff9215echo '445eb518e0954db0b888e654c1ff9215' | sed 's|^\(...\).\+|\1/\0|'
>> Например:
>> было 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
>>> Например:
>>> было 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/
> Hello all.
> Можно ли при помощи sed (или sed+awk) вывести 4 последних буквы слова
> из файла.
> Например:
> Имеем файл (ffile) в нём слово Kukudabra
> Результатом команды должно стать "abra".
> grep Kukudabra ffile | sed .....можно, зависит от того какое место слово занимает в строке
> Спс.