Как разбить строки на подстроку и выделить последний элемент?

Модератор: Модераторы разделов

cramac
Сообщения: 19

Как разбить строки на подстроку и выделить последний элемент?

Сообщение cramac »

Всем привет. Есть файл, в нем куча строк, в файле где то есть 1 или 2 строки начинающиеся на
"downspeed 150"
"downspeed 100"
бывает в файле 1 такая строка.
"downspeed 180"

эти строки выдергиваю с помощью
DOWNSPEED=`/bin/awk '/downspeed/ {print $2}' /log.$1`
в итоге имеем в DOWNSPEED="150 100" или DOWNSPEED="180"

но нужно получить только DOWNSPEED="100" или DOWNSPEED="180"

Как это можно сделать?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5457
ОС: Gentoo

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение /dev/random »

tail
Спасибо сказали:
cramac
Сообщения: 19

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение cramac »

а если строки не последние и их расположение не известно в файле? известно на что начинается...
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5457
ОС: Gentoo

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение /dev/random »

DOWNSPEED=`/bin/awk '/downspeed/ {print $2}' /log.$1 | tail -n 1`
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение Portnov »

awk '/^abc/ {x=$2}; END {print x}'
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение _GV »

А grep'ом это не проще сделать?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5457
ОС: Gentoo

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение /dev/random »

_GV писал(а):
28.04.2008 19:00
А grep'ом это не проще сделать?

Сам с трудом поверил, но... grep'ом на порядки медленнее!!!

Код: Выделить всё

$ time awk '/^downspeed/ {x=$2}; END {print x}' temp.txt
15546

real    0m0.042s
user    0m0.040s
sys    0m0.000s


$ time sed -n '/downspeed/h;${g;s/^[^[:space:]]*[[:space:]]\+//;p}' temp.txt
15546

real    0m0.032s
user    0m0.030s
sys    0m0.003s


$ time grep -F downspeed temp.txt | tail -n 1
downspeed 15546

real    0m21.272s
user    0m17.589s
sys    0m0.183s

(в temp.txt 20000 строк)
Спасибо сказали:
cramac
Сообщения: 19

Re: Как разбить строки на подстроку и выделить последний элемент?

Сообщение cramac »

все проще оказалось, помогла команда tail
Спасибо сказали: