標籤: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數值操作