1.计算的数值的五种方法:
((i++))
let i++
i=$(expr $i + 1)
i=$(echo $i+1|bc)
i=$(echo $i 1|awk '{printf $1+$2}')
2.time命令用来统计命令的执行时间,这部分时间包括总的运行时间,用户空间 执行时间,内核空间执行时间,它通过ptrace系统调用实现。
3.取模使用符号%,而求幂只有bc使用的符号为^,其他命令使用的符号均为**。
4.bc程序是Linux下的计算器,可以用来计算进制转换。例如:
echo "obase:10;ibase8;11" | bc
另一种处理进制转换的方法是:
echo $((8#20))
表示八进制的20,表示的十进制的值是多少。
5.浮点计算有两种方式: * 使用bc计算:
echo "scale=3;1/13" | bc
如果不加scale的话,需要使用下面的格式:
echo "1/13" | bc -l
* 使用awk计算:
echo "1 3" | awk '{printf("%0.3f",$1+$2)}'
6.$#表示传给脚本的参数个数,不包括当前可执行文件的在内,例如:
./test.sh 1 # $#的值为1。
$?表示上一条命令的返回值。
7.环境变量RANDOM产生0到32767之间的随机数,awk的rand函数产生0到1之间的随机数。 在使用awk的rand函数的时候,需要首先用srand函数埋下种子,例如:
echo "" | awk '{srand();printf("%f",rand());}
8.seq可以产生一系列数,这些数可以按照指定的间隔递增。例如:
seq 5 # 产生1到5五个数字
seq 1 2 6 # 产生数列 1 3 5
seq -s : 1 5 # 产生数列 1:2:3:4:5
seq -w 1 100 # 产生数列 001 002 ... 100
seq -f "0x%g" 1 3 # 产生数列 0x1 0x2 0x3
9.sed的使用方法
* cat regular_express.txt | sed 's/[^a-zA-Z]/\n/g' | \
sed '/^$/d' | sort | uniq -c | sort -k 1 -n -r | head
上面的这条命令用于统计文本中出现次数最多的前十个单词,
sed 's/[^a-zA-Z]/\n/g' 用来分割单词,sed '/^$/d'用来去除空行,
sort 将分割好的单词排序,使得相同的单词排列在一起,这样就可以
使用 uniq -c 来进行统计每个单词出现的次数了,最后将统计好的单
词按照出现的次数排序,head 只提取出现在前十个的单词。
* cat index.html | sed -e 's/[^A-Za-z]/\n/g' | sed '/^$/d' | \
grep '^the$' | uniq -c | sed 's/[^0-9]//g'
查找 the 出现的次数
10.shift 每次都将命令行参数向左移动一个,因此当前要处理的参数总为$1
11.在使用bc进行进制转换的时候,涉及到将十六进制的数字转换为其他进制 时,十六进制的表示中的A-F均需要大写,且十六进制数前不需要使用0x, 且需要先写obase,再写ibase。例如:
$ echo "obase=10;ibase=16;12a" | bc
(standard_in) 1: syntax error
$ echo "obase=10;ibase=16;12A" | bc
298
$ echo "ibase=16;obase=10;12A" | bc
12A