When embedding a script in a file as "#!/usr/bin/awk -f", awk will hungrily consume anything that looks like an flag, hiding them from the script itself. The -E option allows the embedded script to see the flags that were passed on the command line, so that the script itself might have some flag processing ability. Otherwise, one always has to invoke the script with "-- flags... options..." instead which is ugly and counter-intuitive; and if you're rewriting an existing script from another language (say 'sh') into awk, this breaks transparency/compatibility.