Начал смотреть свои старые скрипты и понял что слишком много временных файлов делаю. Часть удалил, часть засунул в переменные. Вот что осталось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 не работает с переменными или я не прав?
>[оверквотинг удален]
> 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 работать с переменной
> Выглядит как костыли которым крутят велосипед с квадратными колёсами.1) | 2) | 3) | 4) | 5) > result
> В какую сторону посмотреть, что бы увидеть о чём почитать?)
>> Выглядит как костыли которым крутят велосипед с квадратными колёсами.
> 1) | 2) | 3) | 4) | 5) > result
>> В какую сторону посмотреть, что бы увидеть о чём почитать?)
> http://www.tldp.org/LDP/Bash-Beginners-Guide/html/Ну вам видимо и стоит почитать )
> Ну вам видимо и стоит почитать )не асилил пайпы? :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
>> Ну вам видимо и стоит почитать )
> не асилил пайпы? :facepalm:
> # grep -F qwerty test.csv | awk -F ';' '$3 < 9999'Useless use of grep. :) //К тем cat-у и второму awk-у.
> Дописать оставшиеся пайпы будет тебе в качестве домашнего задания :D
При условии, что выход один, всё, кроме sort-а, собрать в 1 awk -- упражнение на 3 с +. В тот же awk убрать и sort тоже -- ещё плюс 1 бал.
>[оверквотинг удален]
> 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
>
Осилил что-то получше )
awk -F" *;" '$3< '$price' && $9 ~ /'$item'/ '
уже понял что можно почти всё в awk сделать, читаю man
awk намного медленее это делает, но если вопрос скорости не стоит, то можно и в один awk все впихнуть
# time zcat -f -- access.log.gz | grep GET | awk '{print $7}' | wc -l
9465430real 0m8.667s
user 0m8.515s
sys 0m3.327s# time zcat -f -- access.log.gz | awk '/GET/{print $7}' | wc -l
9465430real 0m49.934s
user 0m47.868s
sys 0m1.902s
>[оверквотинг удален]
> 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
161206real 0m0.229s
# time < access_log-20160511 grep GET -c
161206real 0m0.207s
# time < access_log-20160511 awk '$6~/^.GET/{c++}END{print c}'
161206real 0m0.568s
# time < access_log-20160511 awk '/GET/{c++}END{print c}'
161206real 0m1.115s