Skip to content

Instantly share code, notes, and snippets.

@sash-kan
Last active August 29, 2015 14:16
Show Gist options
  • Save sash-kan/a559c5c3151bbecccc44 to your computer and use it in GitHub Desktop.
Save sash-kan/a559c5c3151bbecccc44 to your computer and use it in GitHub Desktop.
fp.2015.03
export dat_files = $(wildcard *.dat)
export states_files = States.txt
export freqs_files = Frequencies.txt
all:
@$(MAKE) -f GNUmakefile2.mk bugs.mid
@$(MAKE) -f GNUmakefile2.mk states.mid
@$(MAKE) -f GNUmakefile2.mk freqs.mid
@$(MAKE) -f GNUmakefile3.mk bugs_freqs.mid
@$(MAKE) -f GNUmakefile3.mk result1.csv
@$(MAKE) -f GNUmakefile3.mk result3.csv
@$(MAKE) -f GNUmakefile3.mk result4.csv
clean:
-@rm result* *.mid
.PHONY: all clean
bugs.mid: $(dat_files)
@echo -n "bugs_list = " > $@
@for f in $(dat_files); do head -n 1 $$f | sed -r 's/ +/_/g;s/\r//'; done | sort -u | xargs echo >> $@
@echo >> $@
@for f in $^; do h=$$(head -n 1 $$f | sed -r 's/ +/_/g;s/\r//'); cat $$f | sed -r 's/\r//;1d;/^$$/d;s/ +/_/g;s/\xc2\xa0/_/g;s/^/'$$h'_/;s/:_?/ = /;s/,_?/ /g'; done >> $@
states.mid freqs.mid: $(states_files) $(freqs_files)
@echo -n "$(basename $@)_list = " > $@
@for f in $($(basename $@)_files); do cat $$f | sed -r 's/^[0-9]+ +//;s/\r//;s/ +/_/g'; done | sort -u | xargs echo >> $@
@for f in $($(basename $@)_files); do cat $$f | sed -r 's/^([0-9]+) +(.*)$$/\2=\1/;s/\r//;s/ +/_/g'; done >> $@
-include $(wildcard *.mid)
bugs_freqs_list = $(foreach b,$(bugs_list),$(foreach f,$(freqs_list),$(foreach c,$($(b)_$(f)),$(c)_$(b) = $(f)\\n)))
result1 = $(foreach s,$(states_list),$(s) $(foreach b,$(bugs_list),$(if $($(s)_$(b)),$($(s)_$(b)),zero))\\n)
result3 = $(foreach s,$(states_list),$(s) $(foreach b,$(bugs_list),$(if $($(s)_$(b)),$($($(s)_$(b)))+,))0\\n)
result4 = $(foreach b,$(bugs_list),$(b) $(foreach s,$(states_list),$(if $($(s)_$(b)),$($($(s)_$(b)))*$($(s))+,))0\\n)
bugs_freqs.mid: bugs.mid freqs.mid
@echo $(bugs_freqs_list) | sed -r 's/^ +//' > $@
result1.csv: bugs.mid bugs_freqs.mid
@echo "Регион $(bugs_list)" | sed -r 's/^ +//;s/ +$$//;s/ +/;/g;s/_+/ /g' > $@
@echo $(result1) | sed -r 's/^ +//;/^$$/d;s/ +$$//;s/ +/;/g;s/_+/ /g;s/zero//g' >> $@
result3.csv result4.csv: states.mid bugs_freqs.mid
@echo $($(basename $@)) | sed -r 's/^ +//;/^$$/d;s/ +$$//;h;s/^[^ ]+ (.*)/echo "\1" | bc/e;x;s/ .*//;G;s/\n/;/g;s/_+/ /g' >> $@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment