S. Fushinobu
DSSPの出力を、分かりやすいように整形して出力するawkスクリプト。まだ、バグが残っているかも。
BEGIN {cln=0} !($NF=="."||$1=="#") { cln++; a[0,cln]=substr($0, 14, 1); a[1,cln]=substr($0, 17, 1); a[2,cln]=substr($0, 19, 1); a[3,cln]=substr($0, 20, 1); a[4,cln]=substr($0, 21, 1); a[5,cln]=substr($0, 22, 1); a[6,cln]=substr($0, 24, 1); a[7,cln]=substr($0, 25, 1); a[8,cln]=substr($0, 34, 1); } END { wid=70; large=cln/wid; middle=cln/10; for(i=0;i<large-1;i++) { printf("%d-%d\n", i*wid+1, (i+1)*wid); for(j=1;j<=wid;j++) { printf("%d",j%10); if (j%10==0) printf(" "); } printf("\n"); for(k=0;k<=8;k++) { for(j=1;j<=wid;j++) { printf("%s",a[k,i*wid+j]); if (j%10==0) printf(" "); } printf("\n"); } } printf("%d-%d\n", i*wid+1, cln); for(j=1;j<=cln%wid;j++) { printf("%d",j%10); if (j%10==0) printf(" "); } printf("\n"); for(k=0;k<=8;k++) { for(j=1;j<=cln%wid;j++) { printf("%s",a[k,i*wid+j]); if (j%10==0) printf(" "); } printf("\n"); } }
1-70 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 AGINYVQNYN GNLGDFTYDE SAGTFSMYWE DGVSSDFVVG LGWTTGSSNA ITYSAEYSAS GSSSYLAVYG EEEEES GGGSEEEEEG GGTEEEEEEE EEESS EEEE EEESS S EEEEEEEE T TSSEEEEEEE > >3<< >> 3<< >3 3< >3 3< >4 44< >5 555< SS SSS S SS S S SS SS S S SSS AAAAA HHHHH HHHHH AAA AA JJJJ CCCCCCC IIIIII I BBBB BBB KKKKKK DDDDDD AAAAA BBBBB BBBBBB B AAAA AAA BBBBBBBB AAAAAAA 71-140 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 WVNYPQAEYY IVEDYGDYNP aSSATSLGTV YSDGSTYQVa TDTRTNEPSI TGTSTFTQYF SVRESTRTSG EETTTTEEEE EEEEESS T TTTSEEEEEE EETTEEEEEE EEEEEEEEET TEEEEEEEEE EEESS SEE >3 3< >33< >3 3< > 444< >5555< SSS SS SS S SSSS SSS S S SSS SS SSS C DDDD DD DD FF FFF FF FFFFFF F eeee ee JJ DD eeee ee GGGG GGGG GGG GGG GGGGG GGG AA AAAA AA AA AA AAA AA AAAAAA AAAA AAA AAA AAAAA AAA BB 141-182 1234567890 1234567890 1234567890 1234567890 12 TVTVANHFNF WAQHGFGNSD FNYQVMAVEA WSGAGSASVT IS EE HHHHHHH HGGGT SS EEEEEEEEEE SSEEEEEEEE E >>3<< > >><<< >>>>XX<< << >5555< SSSSSSS SSSSS SS SSS JJ BBBBBBB I IIIIII C CCCCCCC KKKKK K BB A AAAAAAA B BBBBBB B
各行の意味は、以下の通り。