1

次の入力があるとします。

 SQ   SEQUENCE   365 AA;  40909 MW;  78539C59DB8B1DFC CRC64;
      MAVMAPRTLV LLLSGALALT QTWAGSHSMR YFYTSVSRPG RGEPRFIAVG YVDDTQFVRF
      DSDAASQRME PRAPWIEQEG PEYWDRNTRN VKAQSQTDRV DLGTLRGYYN QSEAGSHTIQ
      MMYGCDVGSD GRFLRGYRQD AYDGKDYIAL KEDLRSWTAA DMAAQTTKHK WEAAHVAEQW
      RAYLEGTCVE WLRRYLENGK ETLQRTDAPK THMTHHAVSD HEATLRCWAL SFYPAEITLT
      WQRDGEDQTQ DTELVETRPA GDGTFQKWVA VVVPSGQEQR YTCHVQHEGL PKPLTLRWEP
      SSQPTIPIVG IIAGLVLFGA VITGAVVAAV MWRRKSSDRK GGSYSQAASS DSAQGSDVSL
      TACKV

5 つのスペースで始まる行を結合する必要があります。次の単純な gawk コマンドは、最初に白い開始行をフィルター処理し、もう 1 つのコマンドで空白を取り除き、意図したとおりに機能します (これを行うには多くの方法があることはわかっていますが、gawk現在学習中です)。

gawk /^"     "/ input | gawk '{ gsub (" ", "", $0); print }'

私の質問は、2 つのコマンドを 1 つに結合すると、何も出力されない理由です。どこかで構文の問題だと確信しています:

gawk '/^"     "/ { gsub (" ", "", $0); print }' input
4

1 に答える 1

2

1行バージョンのパターンからdbl-quote文字を取り出します。

パターンの正規表現では、すべての文字が「存在する必要がある」と見なされ、コマンド全体が一重引用符で囲まれているため、シェルは二重引用符を削除しません。

   gawk '/^     / { gsub (" ", "", $0); print }' input

(fyi:UNIXのテキスト編集用語では、joinは通常、「キャリッジリターンを削除し、テキストを1行に続ける」という意味に解釈されます。)

これがお役に立てば幸いです。

于 2011-03-06T18:54:23.443 に答える