-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オプションは、パターンが一致した回数をカウントするように指示します。

ただし、awk を使用する場合は、シェル スクリプトから文字列を渡すことができます。次のように awk 変数を使用できます-v

#!/bin/sh

string="09/Oct"

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

小文字でも一致させる必要がある場合 (質問に示されている入力に従って)、比較する前にすべてを 1 つのケースに変換できます。

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

これは、GNU の種類 (gawk) だけでなく、awk のすべてのバージョンで動作するはずです。

于 2012-10-10T11:54:58.930 に答える