標籤:linux shell sed bc 數值操作
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 |
參考資料
===============
Shell編程範例 -- by falcon
Shell數值操作