を使用して列のいくつかの数値を合計しようとしています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を使用するのと同じです。正規表現にどれくらい慣れているかよくわかりません。これは非常に強力ですが、この場合、文字列同等チェックを簡単に使用できます。^
$