====== Shell scripting ====== - Download [[https://frippery.org/files/busybox/busybox.exe|busybox.exe]] from https://frippery.org/busybox/. - Create ''C:\opt\bin'' - Copy busybox.exe to C:\opt\bin - Start busybox.exe C:\opt\bin\busybox.exe sh -l ===== Merging CSV files in the current directory ===== # set a variable to know if a file is the first one # because we don't want to skip the head line from the first file first=1 # for each of *.csv file names, assign it to i for i in *.csv; do # if you repeat this script, we don't want to merge # the previously merged file again if [ "$i" = "merged.csv" ]; then # skip this file continue fi # if this file is first if [ $first -eq 1 ]; then # print everything cat "$i" # subsequent files won't be first anymore first=0 else # for non-first files, skip the first line tail -n +2 "$i" fi done > merged.csv # forward any outputs from the above for loop # to merged.csv ===== Finding the order of a column in a CSV file ===== head -1 merged.csv | sed 's/"//g; s/,/ /g' | awk '{ for(i=1; i<=NF; i++) if($i == "TOBS") print i }' ===== Counting non-null records in a column in a CSV file ===== tail -n +2 merged.csv | sed 's/"//g; s/,/ /g' | awk '{ if($57 != "") count++ } END{ print count }'