異なる形式の.csvファイルデータの複数列の合計を計算することはできません。

異なる形式の.csvファイルデータの複数列の合計を計算することはできません。

列の合計を計算するシナリオがあります。

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

おすすめ記事