Всем привет. Есть файл, в нем куча строк, в файле где то есть 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"
Как это можно сделать?
Как разбить строки на подстроку и выделить последний элемент?
Модератор: Модераторы разделов
-
cramac
- Сообщения: 19
-
/dev/random
- Администратор
- Сообщения: 5457
- ОС: Gentoo
-
cramac
- Сообщения: 19
Re: Как разбить строки на подстроку и выделить последний элемент?
а если строки не последние и их расположение не известно в файле? известно на что начинается...
-
/dev/random
- Администратор
- Сообщения: 5457
- ОС: Gentoo
Re: Как разбить строки на подстроку и выделить последний элемент?
DOWNSPEED=`/bin/awk '/downspeed/ {print $2}' /log.$1 | tail -n 1`
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Как разбить строки на подстроку и выделить последний элемент?
awk '/^abc/ {x=$2}; END {print x}'
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Как разбить строки на подстроку и выделить последний элемент?
А grep'ом это не проще сделать?
-
/dev/random
- Администратор
- Сообщения: 5457
- ОС: Gentoo
Re: Как разбить строки на подстроку и выделить последний элемент?
Сам с трудом поверил, но... 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: Как разбить строки на подстроку и выделить последний элемент?
все проще оказалось, помогла команда tail