от теста вида 123/ttt/mmmm/dd/xxx нужно оставить только последние три секции чтоб осталось mmmm/dd/xxx
таких строчек туева хуча, глубина вложенности ессно разная
первое что приходит в голову - сделать cut
но cut умеет отсчитывать только с начала строки, а сколько надо пролистать / до нужной секции - неизвестно
известно только что нужно оставить последние три
таки как?
откусить кусочек текста (cut?)
Модератор: Модераторы разделов
-
bormant
- Сообщения: 1354
Re: откусить кусочек текста
rev | cut | rev ?
$ echo test5/test4/test3/test2/test1 | rev | cut -d / -f 1-3 | rev
test3/test2/test1
$ echo test5/test4/test3/test2/test1 | rev | cut -d / -f 1-3 | rev
test3/test2/test1
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: откусить кусочек текста
Код: Выделить всё
EMAN
selif ro elif a fo senil esrever - ver
SISPONYS
]... elif[ ver
NOITPIRCSED
,tuptuo dradnats eht ot selif deificeps eht seipoc ytilitu ver ehT
‐iceps era selif on fI .enil yreve ni sretcarahc fo redro eht gnisrever
.daer si tupni dradnats eht ,deifПро rev не знал, спасибо.
-
uptime
- Сообщения: 1661
- Статус: Drinker with computing problems
- ОС: kubuntu 8.04
Re: откусить кусочек текста
Довольно грязно, но это первое, что пришло в голову:
1) берем строку
2) прогоняем через cut, оставляя только разделители "/"
3) подсчитываем байты, узнаём количество полей
4) снова через cut, но теперь мы знаем, с которого поля надо стартовать
1) берем строку
2) прогоняем через cut, оставляя только разделители "/"
3) подсчитываем байты, узнаём количество полей
4) снова через cut, но теперь мы знаем, с которого поля надо стартовать
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
The answer is blowin' in the wind.
-
George Shot
- Сообщения: 34
- ОС: All
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: откусить кусочек текста
Код: Выделить всё
diesel@indie:~$ echo "123/ttt/mmmm/dd/xxx" | awk -F/ '{OFS="/"}{ print $(NF-2),$(NF-1),$(NF);}'
mmmm/dd/xxxнафиг cut?
-
Folderx
- Сообщения: 296
- ОС: fedora, mandriva
Re: откусить кусочек текста
вот тоже
Код: Выделить всё
[guest@localhost ~]$ S1="123/ttt/mmmm/dd/xxx"
[guest@localhost ~]$ S2="123/ttt/mmmm/dd/xxx/123/ttt/mmmm/dd/xxx"
[guest@localhost ~]$ expr "$S1" : ".*/\(.*/.*/.*\)"
mmmm/dd/xxx
[guest@localhost ~]$ expr "$S2" : ".*/\(.*/.*/.*\)"
mmmm/dd/xxx
[guest@localhost ~]$-
Voice
- Сообщения: 1073
- Статус: столлманист
- ОС: Debian GNU/Linux
Re: откусить кусочек текста
Да вариантов реализации много можно придумать. Вот еще:
$ echo test5/test4/test3/test2/test1 | grep -Eo '\w+\/\w+\/\w+$'
test3/test2/test1
$
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов