我想在文件中作为字符串搜索,字符串是 dd//mm。我需要计算这些字符串的出现次数。我怎么能在awk中使用字符串。目前我使用这样的东西,但结果是空的:
awk ' /$1/$2/ {i++}END{print i}' filename.text
文件中的示例内容
09/Oct/2012 filecontentesfilecontetn
09/OCt/2012 filecontentesfilecontetn
08/OCt/2012 filecontentesfilecontetn
假设您的 awk 是 GNU:
$ awk '/'$1'\/'$2'/{i++}END{print i}' IGNORECASE=1 file
2
你试过了吗
awk '/dd\/\/mm/ { i++; } END { print i; }' filename.txt
如果您所做的只是计数,您可以使用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)。