このスクリプトを使用して、.docおよび.pdfタイプのファイル数を数えようとしています。しかし、私はforループの最後の括弧で構文エラーを取得し続けます。あなたはそのfor
ループ内の変数名として$7
使用することはできませんAWKスクリプトがforループでエラーをスローする
#!/usr/bin/awk -f
BEGIN {}
{
file = match($7, "/datasheets/")
doccheck = match(tolower($7), ".doc")
pdfcheck = match(tolower($7), ".pdf")
if(doccheck || pdfcheck)
{
count[$7]++
}
}
END{
for ($7 in count)
{
frequency = count[$7]
sub(/datasheets/,"",$7)
minusextension = $7
sub(/\....$/, "", minusextension)
print minusextension, $7, frequency
}
sort
}
もちろん、変数名として '$ 7'を使うことができます。それはちょうどいい考えではないし、それを取り巻く混乱があなたのコードを破る可能性が高い。これを試してください: 'printf 'one \ ntwo \ nthree \ n' | awk '1 END {$ 3 = "foo"; $ 3を印刷します。 } '' – ghoti
'awk 'END {a [1] = 0; for($ 1 in){}} ''=>構文エラー。 'awk 'END {a [1] = 0; for(b in a){}} ''構文エラーはありません。 – Mat
ああ、ちょうどforループです。面白い。私は-1を取り戻す。 – ghoti