-2

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

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

文件中的示例内容

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

3 回答 3

1

假设您的 awk 是 GNU:

$ awk '/'$1'\/'$2'/{i++}END{print i}' IGNORECASE=1 file
2
于 2012-10-10T10:40:56.513 回答
0

你试过了吗

awk '/dd\/\/mm/ { i++; } END { print i; }' filename.txt
于 2012-10-10T07:24:54.213 回答
0

如果您所做的只是计数,您可以使用grep它。

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

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

但是,如果您希望 tp 使用 awk,您可以从 shell 脚本中传递字符串,您可以使用 awk 变量-v

#!/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)。

于 2012-10-10T11:54:58.930 回答