列の合計を計算するシナリオがあります。
SAL|CAL|TAG|VAL
12.11"|"1.1"|"2.1"|"1.1
13.11"|"1.1"|"2.2"|"2.2
14.11"|"1.1"|"2.4"|"2.4
以下のコードは出力を提供せず、出力は0.00です。
この列 CAL VAL の出力が必要です。
awk -F'|' '{T+=$2} END { printf "%.2f\n", T }' demo.txt
出力:
6.7 5.7
ベストアンサー1
ファイル内の区切り文字が一致しないか(|
ヘッダー行には通常の区切り記号がありますが、"|"
後ろに区切り文字があります)、区切り文字は一致しますが|
フィールド参照は一致しません("
最初のフィールドの開始フィールドと"
最後のフィールドの閉じるフィールドと同じです)。なくなった)。
どちらも加算を実行しようとすると、数値がゼロに変換されるように-F'|'
値を$2
設定すると、文字列に解析されます。"1.1"
awkのシステムバージョンがフィールド区切り文字の正規表現をサポートしている場合は、代わりにオプションの先行および末尾の引用符で-F'"?\\|"?'
許可(リテラル)を使用できます。|
$ awk -F'"?\\|"?' '{T+=$2} END { printf "%.2f\n", T }' demo.txt
3.30