用于计算匹配模式C shell的单词的脚本

时间:2009-10-31 12:37:31

标签: shell

我编写了这个脚本,用于计算给定文件中特定模式的出现次数。但是,如果文本文件包含方括号或花括号,则shell会输出消息“Missing}”。这是脚本:

#!/bin/csh
@ count=0
   foreach word ( `cat test` )
    if (`echo $word | egrep -c 'int'`) then
      @ count= $count + 1
    endif
   end
echo $count

1 个答案:

答案 0 :(得分:3)

您需要引用word的扩展:echo "$word"

如果您只想在一行上计算多次出现次数(因为grep -c只计算至少有一次匹配的行),请使用tr将正常空格更改为换行符(然后你可以使用grep -c):

(tr ' \t' '\n\n' | fgrep -c int) < test

此外,scripting csh is usually going to cause more problems than it is worth。尽管有他们自己的历史怪癖,但Bourne shell的脚本更好。如果您想确保您的代码是可移植的,请转到dash。如果您需要更多电量,请与bashkshzsh一起使用。

csh% echo "foo \"bar\" \$ dollar"
csh: Unmatched ".

sh$ echo "foo \"bar\" \$ dollar"
foo "bar" $ dollar