我想在GAWK中编写以下代码?

时间:2013-06-17 07:00:12

标签: python-2.7 gawk

python中给出了以下代码。我希望它用gawk编写,但我无法找到语法的正确链接。请帮助我。

t=0;
while(t<10):
    x=1
    s = raw_input()
    for c in s:
        if(c=='F' or c=='L' or c=='D' or c=='T'):
            x = x*2
    print x
    t = t+1 

1 个答案:

答案 0 :(得分:1)

gawk 'NR <= 10 { x=1; len = length($0);
                 for (i = 1; i < len; i++)
                     if (substr($0, i, 1) ~ /[FLDT]/)
                         x *= 2;
                 print x
               }'

未经测试,因此可能不太正确。 substr行是最可能的问题行;它从$0一次提取一个字符(几乎不是效率的缩影),然后将它与正则表达式进行比较。您可以考虑n = gsub(/[FLDT]/, 'X'),它会计算它所做的替换(以及行中[FLDT]个字符的数量),然后适当地乘以x

NR <= 10条件仅处理前十行。