Skip to content

Instantly share code, notes, and snippets.

@jmchilton
Created August 26, 2012 14:41
Show Gist options
  • Save jmchilton/3480469 to your computer and use it in GitHub Desktop.
Save jmchilton/3480469 to your computer and use it in GitHub Desktop.
sed/awk examples
# Using arrays
grep "identification.*user.*Running" sed_test | sed 's/[^\[]*\[\([\: 0-9\-]*\).*\jobName=\(.*\)\,jobId=\([0-9]*\).*/\1\t\3\t\2/' | awk 'BEGIN {i=0;lj=0} {if(lj!=$2) {i=i+1}; lj=$2; if(s[i]==""){s[i]=e[i]=$1;t[i]=$3}; e[i]=$1;} END{ print i;for(idx=1;idx<=i;idx++){ cmd="date --date=\"" s[idx] "\" +%s"; cmd | getline se; cmd="date --date=\"" e[idx] "\" +%s"; cmd | getline ee; print (ee - se) / 60, "\t" t[idx]}}' FS="\t"
# Improvement using hashs
grep "identification.*user.*Running" sed_test | sed 's/[^\[]*\[\([\: 0-9\-]*\).*\jobName=\(.*\)\,jobId=\([0-9]*\).*/\1\t\3\t\2/' | awk 'BEGIN {i=0;lj=0} {i=$2$3; lj=$2; if(s[i]==""){s[i]=e[i]=$1;t[i]=$3}; e[i]=$1;} END{ print i;for(idx in s){ cmd="date --date=\"" s[idx] "\" +%s"; cmd | getline se; cmd="date --date=\"" e[idx] "\" +%s"; cmd | getline ee; print (ee - se) / 60, "\t" t[idx]}}' FS="\t"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment