#!/bin/gawk BEGIN { add_line_after != "" ; separator = "" ; wide_separator = "" ; for(i=0;i<=140;i++) { wide_separator = wide_separator "-" ; } ie_separator = "-- " ; for (i=0;i<=137;i++) { ie_separator = ie_separator "=" ; } } /^[0-9]+\./ { in_IE = "no" ; } /^-- ASN1START/ { print ""; in_ASN1 = "yes"; next; } /^-- ASN1STOP/ { in_ASN1 = "no"; next; } /^-- TAG-/ { next; } /^[[:space:]]*$/ { if (next_line == "condition") { print separator ; } if ((next_line == "field description") || (next_line == "field name")){ print separator ; } next_line = "" ; # #if (empty_line == "yes") { # next; # } empty_line = "yes" ; # print "a" ; # print ; } /^–[[:space:]]+ParentIE-WithEM$/ { exit 0 ; } /^–[[:space:]]+[A-Za-z0-9-]+$/ { if (empty_line == "yes") { print ie_separator; print "-- IE: " $2; print "" ; empty_line = "no" ; conditions = "" ; } in_IE = "yes" ; next ; } /^Conditional Presence/ { add_line_after = ""; separator = "" ; $0 = "Conditional presence" ; for(i=0;i<=140;i++) { separator = separator "-" ; } # print separator; #add_line_after = separator ; next_line = "condition" ; } # Need to catch "x and y field descriptions" /field descriptions$/ { add_line_after = ""; separator = "" ; for(i=0;i<=140;i++) { separator = separator "-" ; } # print separator; # add_line_after = separator ; next_line = "field name" ; } #/^[A-Za-z0-9-]+[[:space:]]+[A-Za-z0-9-]+/ { # if (next_line == "field description") { # add_line_after = separator ; # next_line = "field name"; # } #} /^[A-Za-z0-9-]+(, [A-Za-z0-9-]+)*$/ { if (next_line == "field name") { print separator ; $0 = "Field: " $0 #add_line_after = " "; next_line = "field description"; } else if (next_line == "field description") { print separator ; $0 = "Field: " $0 #add_line_after = separator ; #print "separator est " separator; next_line = "field name"; } } { if (in_IE == "yes") { if ((next_line == "condition") && ($1 != "Conditional")) { if (index(conditions, $1) != 0) { print separator; print "-- Condition: " $1; $1 = ""; } if ((in_ASN1 == "no") && !(/^\s*$/)) { $0 = "-- " $0 ; } print ; } else { if ((in_ASN1 == "no") && !(/^\s*$/)) { $0 = "-- " $0 ; } print; } if (add_line_after != "") { print add_line_after ; add_line_after = "" ; } if (/-- Cond [A-Za-z0-9-]+$/) { conditions = conditions " " $NF ; } } }