我想創建 linux 腳本行,該行遍歷輸出的每一行,并將第 2 列數字相加,并分別對第 4 列數字求和,然后列印出兩個總和
$ df | grep "/mnt" | sort -n -k2 -r
/dev/sdb1 2883220084 90152 2853810896 1% /mnt/b
/dev/sda1 1952208720 290495232 1642161972 16% /mnt/a
/dev/sdc1 975584768 77856 965722916 1% /mnt/c
/dev/sdd1 975584748 77852 965722900 1% /mnt/d
/dev/sde2 107003844 24 101522180 1% /mnt/e
此行僅對最大的行執行此操作。我希望它添加所有行。
$ df | grep "/mnt" | sort -n -k2 -r | head -1 | awk '{print $2" "$4}'
請問我該怎么做?
uj5u.com熱心網友回復:
不需要greping、排序或head。
df | awk '/\/mnt/{a =$2;b =$4}END{printf "%s\t%s\n",a,b}'
awk處理匹配的每一行/mnt,添加$2ina和$4in的值b。一旦處理完成(在END陳述句中),我們將列印它們。
uj5u.com熱心網友回復:
純重擊:
#! /bin/bash
exec <<EOF
/dev/sdb1 2883220084 90152 2853810896 1% /mnt/b
/dev/sda1 1952208720 290495232 1642161972 16% /mnt/a
/dev/sdc1 975584768 77856 965722916 1% /mnt/c
/dev/sdd1 975584748 77852 965722900 1% /mnt/d
/dev/sde2 107003844 24 101522180 1% /mnt/e
EOF
sum2=0
sum4=0
while read c1 c2 c3 c4 rest; do
let sum2 =$c2 sum4 =$c4
done
printf '%s\n' "$sum2" "$sum4"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362988.html
上一篇:選項的完整引數
