~~TOC:1-4~~ ====== awk programming resources ====== ====== Clean up SPM table .csv files ====== <2016-01-14> Anthony did this for the MathWONC project (see [[internal:mathwonc2015_notes#awk_script_for_cleaning_up_spm_tables|here]]). Here is the code from ''cleanup_awk_linux.sh'': # cleanup_awk.sh # bash script to run awk commands # For removing lines from spm table .csv files # Removes lines with "Unidentified" or any other simple criterion # # Use: $ bash cleanup_awk.sh spm_table_file_name.csv # # 2016.01.14 by adc # Remove unwanted columns # # $1 is the variable that holds the first input argument (the file name in this case) # Save the output to a temp file that will be deleted at the end of this script awk -F, 'BEGIN{OFS=","} {print $5,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18;}' $1 > temp.csv; # Middle of awk script includes pattern matching criteria for including and excluding certain lines # Output to a new file name, which is like input file name but ending in "_CLEANED.csv" instead of just ".csv" awk -F, 'BEGIN{OFS=","} $1 > 5 && $10 !~ /Unidentified/ && $8 !~/NA/ {print}' temp.csv > ${1/.csv/_CLEANED.csv}; # Remove the temporary file rm temp.csv \\ ---- ====== Sort article lists by year using awk and sed ====== [Originally from Anthony's ''science.txt'' file, entry dated 2015-07-18.] Exported bibliography to clipboard in Zotero, pasted into Emacs to write new file: ''.../VNLab/studies/ipsNumMeta/sources_number.txt'' Try using awk to print column with year before whole rest of line gawk '{match($0,"\\([0-9]*[a-z]?\\)",a)} {print a[0], $0}' sources_number.txt > sources_number_yearCol.txt Remove parens from FIRST (year) on a line: sed -r 's/[(]([0-9]*[a-z]?)[)]/\1/' sources_number_yearCol.txt > sources_number_yearCol_noParens.txt Used rectangle register copy trick in Emacs to copy only first five chars (catches both 2012 and 2012b) and pasted ultimately to Excel column. \\ ----