1

以下代码在 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 
4

1 回答 1

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')which 给出它所做的替换计数(以及因此[FLDT]行中的字符数),然后x适当地相乘。

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

于 2013-06-17T07:29:20.153 回答