INPUT_FILE=/dev/stdin OUTPUT_FILE=/dev/stdout cat $INPUT_FILE | \ gawk ' function is_inline_tag(str, aux, val) { for(val in INLINETAGS) { aux = INLINETAGS[val] ""; if(gsub(aux, aux, str) == 1) { return 1; } } return 0; } BEGIN{ RS=""; INLINETAGS[1]=""; INLINETAGS[2]=""; INLINETAGS[3]=""; } { MYRECORD[++nline] = $0; } END{ for(i=1; i < nline; i++) { if(gsub("", "", MYRECORD[i]) == 1) { if(is_inline_tag(MYRECORD[i])) { printf("%s", MYRECORD[i]); } else { printf("%s", MYRECORD[i]); } } else { printf("%s", MYRECORD[i]); } } printf("%s", MYRECORD[nline]); }' > $OUTPUT_FILE