awk を使用した他の列の値に基づく列の値の合計

awk を使用した他の列の値に基づく列の値の合計

を使用して列のいくつかの数値を合計しようとしていますawk。 「smiths」の3列だけを合計して合計212個を得たいと思います。awk「smiths」だけを使用するのではなく、列全体を合計することができます。私は持っています:

awk 'BEGIN {FS = "|"} ; {sum+=$3} END {print sum}' filename.txt

私もパテを使用しています。助けてくれてありがとう。

smiths|Login|2
olivert|Login|10
denniss|Payroll|100
smiths|Time|200
smiths|Logout|10

ベストアンサー1

awk -F '|' '$1 ~ /smiths/ {sum += $3} END {print sum}' inputfilename
  • フラグは-Fフィールド区切り文字を設定します。特殊なシェル文字なので、一重引用符で囲みました。
  • 次に、$1 ~ /smiths/最初のフィールドが正規表現に一致する行にのみ、次の{code block}を適用します/smiths/
  • 残りはコードと同じです。

ここでは実際に正規表現を使用せず、特定の値のみを使用するため、次のように簡単に使用できます。

awk -F '|' '$1 == "smiths" {sum += $3} END {print sum}' inputfilename

文字列同等性を確認してください。これは、文字列の先頭(フィールド1の先頭)にのみ一致するアンカーと、文字列の最後にのみ一致するアンカーを/^smiths$/含む他の答えで述べたように、regexを使用するのと同じです。正規表現にどれくらい慣れているかよくわかりません。これは非常に強力ですが、この場合、文字列同等チェックを簡単に使用できます。^$

おすすめ記事