6
ジャック 10
J10
20
ル・カル20
A bc U 20

これらの数値の合計を取得したい: 10+10+20+20+20 = 80

しかし、数値を取得するために使用できませんcat input|cut -d " " -f 3。どうすればよいですか?

4

3 に答える 3

17

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
于 2012-05-18T03:38:07.630 に答える
0

あなたのファイルがinput.txtと呼ばれると仮定します:

echo `sed 's/[^0-9]*\([0-9]*\).*/\1+/' input.txt` '0' | bc

(sed や awk でもっとエレガントな方法があると思います。これは、bc を満足させるために終端の '0' を追加する簡単なハックです。コマンドのさまざまな部分を別々に実行して、何が起こっているのかを把握してください。の上)

于 2012-05-18T03:29:47.150 に答える
0

すべての空白を + に置き換えて、結果を bc にパイプすることができます

エコー "5 6 2" | sed -E -e 's/\s+/+/g' | 紀元前

于 2019-10-04T03:52:01.213 に答える