=== Find length of the longest line in a file === awk ' { if ( length > L ) { L=length} }END{ print L}' file.txt === Sum a column from CSV file === awk -F "," '{ sum += $10 } END { print sum }' daily_beehive_casino_games_activity_2015-08-16.csv == Multiple sums with additional formatting == awk -F "," '{ money_bets += $6; money_settles += $7; bonus_bets += $8; bonus_settles += $9 } END { print "=========================\nMoney bets:\t", money_bets, "\nBonus bets:\t", bonus_bets, "\nTotal bets:\t", money_bets + bonus_bets, "\nMoney settles:\t", money_settles, "\nBonus settles:\t", bonus_settles, "\nTotal settles:\t", money_settles + bonus_settles, "\n=========================\nGGR:\t\t", (money_bets + bonus_bets) - (money_settles + bonus_settles) }' daily_beehive_sport_bet_activity_*.csv === If we are only interested in summing certain rows === awk -F "," '$7=="deposit"{ sum += $11 ;} END { print sum }' "daily_beehive_player_transaction_2015-09-03.csv" === Filter greater than from CSV === awk -F "," '$10 > 0' daily_beehive_casino_games_activity_2015-10-10.csv | cut -d \, -f 3 | sort -u | wc -l Apart of awk filtering, I cut everything apart of 3rd column, get unique values of it and count them. === Parsing dates === gawk -F "," '{after_n_days = 150 * 24 * 3600; d=$21;gsub(/[-:T]/, " ", d);gsub(/\+.+/, " ", d)}; $24 > 0 && mktime(d) > (systime() - after_n_days)' casinoheroes-SE-09-19.csv | wc -l It should return entries younger than 150 days. === Other === * http://stackoverflow.com/questions/13023595/sed-awk-print-text-between-patterns-spanned-across-multiple-lines * http://www.grymoire.com/Unix/Awk.html#uh-1 * https://news.ycombinator.com/item?id=13451454 * https://news.ycombinator.com/item?id=15549318 * https://github.com/learnbyexample/Command-line-text-processing/blob/master/gnu_awk.md * https://developer.ibm.com/tutorials/l-awk1/