如何在linux中的awk shell脚本中搜索dd / mm

时间:2012-10-10 07:21:30

标签: linux shell awk

我想在文件中搜索字符串,字符串是dd // mm。我需要计算这些字符串的出现次数。我怎么能在awk中使用该字符串。目前我使用这样的东西,但结果是空的:

awk ' /$1/$2/  {i++}END{print i}' filename.text

文件中的示例内容

09/Oct/2012 filecontentesfilecontetn
 09/OCt/2012 filecontentesfilecontetn
08/OCt/2012 filecontentesfilecontetn 

3 个答案:

答案 0 :(得分:1)

假设你的awk是GNU:

$ awk '/'$1'\/'$2'/{i++}END{print i}' IGNORECASE=1 file
2

答案 1 :(得分:0)

你试过

吗?
awk '/dd\/\/mm/ { i++; } END { print i; }' filename.txt

答案 2 :(得分:0)

如果你正在做的只是计数,你可以使用grep

$ grep -c '09/Oct' file.txt

-c选项告诉它计算模式匹配的次数。

但是如果你想要使用awk,你可以从shell脚本中传入字符串,你可以使用带有-v的awk变量:

#!/bin/sh

string="09/Oct"

awk -v string="$string" '$0 ~ string {i++} END {print i}' file

如果您还需要以小写字母匹配(根据问题中显示的输入),您可以在比较之前将所有内容转换为一个案例:

awk -v string="$string" 'BEGIN{string=tolower(string)} tolower($0) ~ string {i++} END {print i}' file

这应该适用于所有版本的awk,而不仅仅是GNU种类(gawk)。