BEGIN { FILEPATH="dummyhead" } /^diff / { DIFFLINE=$0; } /^\-\-\- / { FILEPATH=$2 ; print FILEPATH; dirname_cmd="/usr/bin/dirname " FILEPATH; dirname_cmd | getline DIR print "DIR=" DIR; system("mkdir -p " DIR); KEEPING="true"; } ! /^diff /{ if (KEEPING == "true") { print DIFFLINE > (FILEPATH); KEEPING="false"; } print $0 >> (FILEPATH); } END {}