export m1=`free|cut -d ":" -f2|sed -e "s/^ss*//g"|head -2|tail -1|cut -d ' ' -f1`
#free
total used free shared buff/cache available
Mem: 1002664 27516 803344 248 171804 961688
Swap: 0 0 0
cut -d ":" -f2
以:为分隔符,打印出第二部分
total used free shared buff/cache available
1002664 27516 803344 248 171804 961688
0 0 0
sed -e "s/^ss*//g" 表示将行头空白字符去除掉
s 匹配任何空白字符,包括空格、制表符、换页符等等。
非打印字符
非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:
字符 描述
cx 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
f 匹配一个换页符。等价于 x0c 和 cL。
匹配一个换行符。等价于 x0a 和 cJ。
匹配一个回车符。等价于 x0d 和 cM。
s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。注意 Unicode 正则表达式会匹配全角空格符。
S 匹配任何非空白字符。等价于 [^ f v]。
匹配一个制表符。等价于 x09 和 cI。
v 匹配一个垂直制表符。等价于 x0b 和 cK。
非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:
字符 描述
cx 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
f 匹配一个换页符。等价于 x0c 和 cL。
匹配一个换行符。等价于 x0a 和 cJ。
匹配一个回车符。等价于 x0d 和 cM。
s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。注意 Unicode 正则表达式会匹配全角空格符。
S 匹配任何非空白字符。等价于 [^ f v]。
匹配一个制表符。等价于 x09 和 cI。
v 匹配一个垂直制表符。等价于 x0b 和 cK。
|head -2|tail -1| 取出前两行后一行
1002664 27516 803344 248 171804 961688
cut -d ' ' -f1
以空给为分隔符,打印出第一部分
export m=`expr $m1 * $1 / 100 / 1024`
乘法操作应采用 * 转义,避免被作为Shell通配符