#!/bin/sh # Copyright for the Uniform Repository Service (c) 1995, 1996, 1997, # by Gerald Banon. All rights reserved. # Version 1.1 # formatbib # formatbib a.bib # formatbib @reference.bib cat $1 | \ sed '/^@.*[^,]$/s/$/,/ /[^ ]=[ ]*"[^,]/s/=/ =/ /="[^,]/s/=/= / s/[ ]*"[ ]*,$/",/ s/"$/",/ s/^[ ]*}/}/ /URL[ ]*=/!s//\>/g s/[ ]*$//' | \ awk ' BEGIN { entry = "0" flag1 = "0" pl = "" # pl (previous line) nf = 0 blanks = " " } /\=[ ]*"[^,]/ || /^}/ { if (entry == "1") { if (pl !~ /",$/) { pl = pl"\"," w[nf] = w[nf]"\"," } } } { if (pl ~ /^}/) entry = "0" if (substr(pl, 21, 1) != "\"" && pl ~ /\=[ ]*"[^,]/ || \ flag1 == "1" || entry == "1" && \ (length(pl) > 71 || substr(pl, 1, 21) != blanks && pl !~ /\=[ ]*"[^,]/)) { if (pl ~ /\=[ ]*"[^,]/) { field = w[1]" "w[2] n = 3 flag2 = "0" line = "" } else if (flag1 == "0") { n = 1 flag2 = "1" line = "" } flag1 = "1" for (i = n; i <= nf; i++) { nline = line w[i] if (length(nline) <= 50 || \ length(nline) <= 51 && flag2 == "0") line = nline" " else { if (flag2 == "0") { printf " %-18s%s\n", field, substr(line, 1, 51) flag2 = "1" # field first line printed } else printf \ " %s\n", substr(line, 1, 50) line = w[i]" " } } if (w[nf] ~ /",$/) { if (flag2 == "0") { printf " %-18s%s\n", field, line } else printf " %s\n", line flag1 = "0" } else n = 1 } else if (NR > 1) print pl if (pl ~ /^@/) entry = "1" } { pl = $0 nf = split($0, w) } END { print pl }'