gawk简单的程序差异

时间:2011-02-28 18:08:20

标签: gawk

给出以下输入:

 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命令首先过滤白色起始行,另一个删除白色空格,它按预期工作(我知道有很多方法可以做到这一点,我现在只是学习gawk ):

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

我的问题是,如果我将两个命令合二为一,它就不会打印任何东西。我确定这是一个语法问题:

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

1 个答案:

答案 0 :(得分:2)

从1行版本的模式中取出dbl-quote字符。

在模式的正则表达式中,每个字符都被认为是“必须存在”,并且由于您使用单引号引用了整个命令,因此shell不会删除双引号。

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

(fyi:在unix文本编辑用语中,通常将连接表示为'删除回车符,并在一行上继续文本'。)

我希望这有帮助!