私のディレクトリには、次の内容を含むいくつかのファイルがあります。
Wood *
Nails
Large Hammer *
いくつかの名前は後ろにアスタリスクがあり、一部はそうではありません。この種類のコンテンツを含む複数のファイルがあります。各ファイルには製品がある場合とない場合があります。一つ隣には星があります。すべてのファイルで各製品のアスタリスクが発生した回数を数えるbashスクリプトを作成する必要があります。たとえば、出力は次のようになります。
Wood 12
Yellow Lamps 6
Nails 4
...
これは、すべてのファイルで木の横に星12個、ランプの横に星6個などが見つかったことを意味します。
Cで解析するのは非常に簡単ですが、バイナリを実行したくありません。私はシェルスクリプトが欲しいが、grepとawkに精通していませんが、これが必要だと確信しています。
星自体を数える方法は知っていますが、どの星がどの製品に属しているかをどのように追跡するのかわかりません。
ベストアンサー1
このようにアッ:
awk '$NF=="*"{$NF=""; arr[$0]++}END{for (i in arr) print i arr[i]}' ./*
$NF
デフォルトはスペースで区切られた最新の文字列です。- 主な秘訣は、
arr
現在単語がある場所にayという関連単語を作成することです。鍵そして増加値 - ああ、私たち
END
は各キー/値を繰り返します。arr
print
そして真珠1本のライン:
perl -anE '
if ($F[-1] eq "*") {
$k = join " ", @F[0..@F-2];
$a->{$k}++
}
END{say "$_ $a->{$_}" for keys %$a}
' ./*
-a
はい分ける@F
基本配列のパターン