我想在文件中搜索字符串,字符串是dd // mm。我需要计算这些字符串的出现次数。我怎么能在awk中使用该字符串。目前我使用这样的东西,但结果是空的:
awk ' /$1/$2/ {i++}END{print i}' filename.text
文件中的示例内容
09/Oct/2012 filecontentesfilecontetn
09/OCt/2012 filecontentesfilecontetn
08/OCt/2012 filecontentesfilecontetn
答案 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)。