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

Исходное сообщение
"Оптимизация и удаление временных файлов"

Отправлено globi , 09-Май-16 22:12 
Начал смотреть свои старые скрипты и понял что слишком много временных файлов делаю. Часть удалил, часть засунул в переменные. Вот что осталось

1) grep blabla /home/base.csv > /home/blabla.csv - ищу нужные строки в файле и сохраняю во временный
2) awk -F" *;" '$3< 9999' /home/blabla.csv > /home/blabla2.csv - далее ищу строки со значением меньше 9999 в третьем столбце и сохраняю во 2ой временный файл
3) cat /home/blabla2.csv | tr -d \" > /home/blabla3.csv - удаляю " и сохраняю в 3ий файл
4) awk -F" *;" ' {print "itog_"$1"-"$2"-"$9"     "$3} ' /home/blabla3.csv > /home/blabla4  - формирую запись из полученных значений в столбцах и опять же сохраняю в временный файл
5)sort -u /home/url_blabla > /home/blabla - сортирую и получаю итоговый файл

Выглядит как костыли которым крутят велосипед с квадратными колёсами.
В какую сторону посмотреть, что бы увидеть о чём почитать?)
Как я понял sed не работает с переменными или я не прав?


Содержание

Сообщения в этом обсуждении
"Оптимизация и удаление временных файлов"
Отправлено reader , 10-Май-16 14:29 
>[оверквотинг удален]
> 2ой временный файл
> 3) cat /home/blabla2.csv | tr -d \" > /home/blabla3.csv - удаляю "
> и сохраняю в 3ий файл
> 4) awk -F" *;" ' {print "itog_"$1"-"$2"-"$9"     "$3}
> ' /home/blabla3.csv > /home/blabla4  - формирую запись из полученных значений
> в столбцах и опять же сохраняю в временный файл
> 5)sort -u /home/url_blabla > /home/blabla - сортирую и получаю итоговый файл
> Выглядит как костыли которым крутят велосипед с квадратными колёсами.
> В какую сторону посмотреть, что бы увидеть о чём почитать?)
> Как я понял sed не работает с переменными или я не прав?

почему не читаете /home/base.csv или /home/blabla.csv построчно в переменную и на шагах 2,3,4 работать с переменной


"Оптимизация и удаление временных файлов"
Отправлено _ , 10-Май-16 17:05 
> Выглядит как костыли которым крутят велосипед с квадратными колёсами.

1) | 2) | 3) | 4) | 5) > result

> В какую сторону посмотреть, что бы увидеть о чём почитать?)

http://www.tldp.org/LDP/Bash-Beginners-Guide/html/


"Оптимизация и удаление временных файлов"
Отправлено globi , 10-Май-16 18:51 
>> Выглядит как костыли которым крутят велосипед с квадратными колёсами.
> 1) | 2) | 3) | 4) | 5) > result
>> В какую сторону посмотреть, что бы увидеть о чём почитать?)
> http://www.tldp.org/LDP/Bash-Beginners-Guide/html/

Ну вам видимо и стоит почитать )


"Оптимизация и удаление временных файлов"
Отправлено ALex_hha , 10-Май-16 20:52 
> Ну вам видимо и стоит почитать )

не асилил пайпы? :facepalm:


# cat test.csv
1;2;1000
2;2;2000
3;2;3000
4;2;4000
5;qwerty;5000
6;2;6000
7;2;7000
8;qwerty;8000
9;2;9000
10;qwerty;10000
11;qwerty;11000

# grep -F qwerty test.csv | awk -F ';' '$3 < 9999'
5;qwerty;5000
8;qwerty;8000


Дописать оставшиеся пайпы будет тебе в качестве домашнего задания :D

"Оптимизация и удаление временных файлов"
Отправлено Andrey Mitrofanov , 10-Май-16 21:15 
>> Ну вам видимо и стоит почитать )
> не асилил пайпы? :facepalm:
> # grep -F qwerty test.csv | awk -F ';' '$3 < 9999'

Useless use of grep. :)   //К тем cat-у и второму awk-у.

> Дописать оставшиеся пайпы будет тебе в качестве домашнего задания :D

При условии, что выход один, всё, кроме sort-а, собрать в 1 awk -- упражнение на 3 с +. В тот же awk убрать и sort тоже -- ещё плюс 1 бал.


"Оптимизация и удаление временных файлов"
Отправлено globi , 10-Май-16 22:03 
>[оверквотинг удален]
> 7;2;7000
> 8;qwerty;8000
> 9;2;9000
> 10;qwerty;10000
> 11;qwerty;11000
> # grep -F qwerty test.csv | awk -F ';' '$3 < 9999'
> 5;qwerty;5000
> 8;qwerty;8000
>

> Дописать оставшиеся пайпы будет тебе в качестве домашнего задания :D

Осилил что-то получше )
awk -F" *;" '$3< '$price' && $9 ~ /'$item'/ '
уже понял что можно почти всё в awk сделать, читаю man


"Оптимизация и удаление временных файлов"
Отправлено ALex_hha , 10-Май-16 23:38 
awk намного медленее это делает, но если вопрос скорости не стоит, то можно и в один awk все впихнуть


# time zcat -f -- access.log.gz | grep GET | awk '{print $7}' | wc -l
9465430

real    0m8.667s
user    0m8.515s
sys     0m3.327s

# time zcat -f -- access.log.gz | awk '/GET/{print $7}' | wc -l
9465430

real    0m49.934s
user    0m47.868s
sys     0m1.902s



"Оптимизация и удаление временных файлов"
Отправлено Andrey Mitrofanov , 11-Май-16 09:55 
>[оверквотинг удален]
> 9465430
> real    0m8.667s
> user    0m8.515s
> sys     0m3.327s
> # time zcat -f -- access.log.gz | awk '/GET/{print $7}' | wc
> -l
> 9465430
> real    0m49.934s
> user    0m47.868s
> sys     0m1.902s

Гм, деситтна тормоз. //Стагнация в GNU! Требовать jit-ов и нативной конперяции в аптеках!

# time < access_log-20160511 grep GET | awk '{print $7}' | wc -l
161206

real    0m0.229s
# time < access_log-20160511 grep GET -c
161206

real    0m0.207s
# time < access_log-20160511 awk '$6~/^.GET/{c++}END{print c}'
161206

real    0m0.568s
# time < access_log-20160511 awk '/GET/{c++}END{print c}'
161206

real    0m1.115s