shell的数字、字符串处理

1、显示小数点前的0

由于bc计算器目前还不支持显示小数点前的0,所以我们要用一用强大的awk工具啦!

例如:

echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f", $0}'

2、表示1~21的命令

echo `seq 1 21`

3、shell 将字符串转换为数字
例如:a="024"

1.用${{a}}

2.用let达到(()) 运算效果。

let num=0123;
echo $num; 
83

3.双括号运算符:

a=$((1+2));

echo $a;

等同于:

a=`expr 1 + 2`

echo "2019年8月21日" | tr -cd "[0-9]"

这样就得到2019821

4、time命令简介

用于打印出一条命令或一个程序的执行时间
time 命令以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中

time结果由三部分组成:real、user和sys

    有时处于数据处理的需要,我们需要将time的运行结果输出到文件中,并进行相应的处理,一般情况下都是要得到real的结果,这时如果直接用平时使用的重定向的方法去导入到文件,是不会达到想要的效果;time命令的输出结果是到stderr的,而不是到stdout,所以重定向的方法需要改变。例如:

(time ls) 2>>out.txt   

  >>  符号是重定向并添加到文件中,也就是文件内容不会进行覆盖

>  符号,大家应该猜到了吧,这个达到的效果是直接将前面的内容覆盖掉

数值之间的比较

>   =   <   >=   <=   

比较格式: [ num1 比较符 num2 ]    左边的括号与num1之间有一个空格,num2和右边的括号之间也有空格。

比较符:
-eq 判断相等,相等返回true,否则返回false
-ne 判断是否不相等,不相等返回true,否则返回false
-gt 判断左边是否大于右边的值,大于则返回true,否则返回false
-lt 判断左边是否小于右边的值,小于则返回true,否则返回false
-ge 判断左边是否大于或等于右边的值,大于则返回true,否则返回false
-le 判断左边是否小于右边的值,小于则返回true,否则返回false

小数的比较
1.用bc 对小数进行运算
echo 5.5+1.1 | bc
6.6

2.强大的awk判断小数点后的位数

a=5.2130;echo $a | awk '{printf "%.3f", $0}'

5.213
3.用awk比较大小

awk -v num1=1 -v num2=0.251 'BEGIN{print(num1>num2)?"0":"1"}'
0
如果num1>num2打印输出0,否则输出1

4.用expr

 a=2.014 b=1.025;expr $a > $b

echo $?
0

返回值为0:表示a>b;返回值为1:表示a

a=2.014 b=1.025;expr $a \> $b

如果a>b,则输出为1;如果a 5.使用br

echo "6.6>5.5" |br
1

返回值为1:表示前者大于后者;返回0:表示后者大于前者

你可能感兴趣的:(小笔记)