お互いに本質的に無関係なお気に入りのカップル。接続されていない 2 つの異なる提案としてお読みください。
列番号を簡単に特定する
:
仕事でログ分析を行うときのように awk を頻繁に使用する場合、ファイルの列番号を調べる必要があることがよくあります。したがって、たとえば Apache アクセス ファイルを分析する場合 (いくつかのサンプルはここにあります)、ファイルに対して以下のスクリプトを実行します。
NR == 1 {
for (i = 1 ; i <= NF ; i++)
{
print i "\t" $i
}
}
NR > 1 {
exit
}
私は通常、「c'olumn 'umbers」を意味する「cn.awk」と呼んでいます。クリエイティブですよね?とにかく、出力は次のようになります。
1 64.242.88.10
2 -
3 -
4 [07/Mar/2004:16:05:49
5 -0800]
6 "GET
7 /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables
8 HTTP/1.1"
9 401
10 12846
何が何であるかを伝えるのは非常に簡単です。私は通常、サーバー上でこれにエイリアスを設定し、どこにでも持っています。
名前によるフィールドの参照
ここで、ファイルにヘッダー行があり、フィールド番号の代わりにそれらの名前を使用したいとします。これにより、次のことが可能になります。
NR == 1 {
for (i = 1 ; i <= NF ; i++)
{
field[$i] = i
}
}
さて、このヘッダー行があるとします...
metric,time,val,location,http_status,http_request
...そして、列を合計したいと思いval
ます。$3 を参照する代わりに、名前で参照できます。
NR > 1 {
SUM += $field["val"]
}
主な利点は、スクリプトをより読みやすくすることです。