ジャック 10 J10 20 ル・カル20 A bc U 20
これらの数値の合計を取得したい: 10+10+20+20+20 = 80
しかし、数値を取得するために使用できませんcat input|cut -d " " -f 3
。どうすればよいですか?
grep + paste + bc を使用できます
$ grep -oE '[0-9]+' file
10
10
20
20
20
$ grep -oE '[0-9]+' file | paste -s -d + -
10+10+20+20+20
$ grep -oE '[0-9]+' file | paste -s -d + - | bc
80
grep の代わりに、cut を使用できます
$ cut -c 8- file
またはただおかしい
$ awk '{print $NF}' file
ただし、awk を使用できる場合は、awk を使用して合計できます
$ awk '{total += $NF} END { print total }' file
あなたのファイルがinput.txtと呼ばれると仮定します:
echo `sed 's/[^0-9]*\([0-9]*\).*/\1+/' input.txt` '0' | bc
(sed や awk でもっとエレガントな方法があると思います。これは、bc を満足させるために終端の '0' を追加する簡単なハックです。コマンドのさまざまな部分を別々に実行して、何が起こっているのかを把握してください。の上)
すべての空白を + に置き換えて、結果を bc にパイプすることができます
エコー "5 6 2" | sed -E -e 's/\s+/+/g' | 紀元前