#!/usr/bin/awk BEGIN { filen="crap.patch"; flag=-1; } { if ($0 ~ /^diff +(-[a-zA-Z]*|--[a-zA-Z]*)/) { if(flag > 0) close(filen); text = $0; ind = split(text, components); filen=components[ind] ".patch"; dirname="dirname " filen; dirname | getline dirn; close(dirname); mkdir="mkdir -p " dirn; mkdir | getline s; close(mkdir); printf("Creating patch %s\n", filen); flag=1; } print >> filen }