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

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

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

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

1 回答 1

2

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

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

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

(仅供参考:在 unix 文本编辑用语中,join 通常表示“删除回车,并让文本在一行上继续”。)

我希望这有帮助!

于 2011-03-06T18:54:23.443 回答