AWK操作字符串的截取
對於awk和Bash來說,他們使用的是不同的string索引系統;
bash的第一個字符從0開始記錄;
awk的第一個字符從1開始記錄;
#012345678 ------------Bash
#123456789 -------------Awk
以下是案例說明:
[html]
[root@Slave02 shell]# vi substring-extraction.sh
#!/bin/bash
String=23skidoo1
echo ${String:2:4}
echo |awk '{ print substr("'"${String}"'",3,4) }'
exit 0
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"substring-extraction.sh" [New] 8L, 108C written
[root@Slave02 shell]# sh substring-extraction.sh
skid
skid
[root@Slave02 shell]#
使用變量的前綴來匹配前面聲明過的所有變量;
如:
[html]
[root@Slave02 shell]# xyz23=watever
[root@Slave02 shell]# xyz24=asdf
[root@Slave02 shell]# echo "
a=${!xyz*}"
a=xyz23 xyz24
[root@Slave02 shell]# echo "a=${!xyz@}"
a=xyz23 xyz24
[root@Slave02 shell]#
拋骰子游戲;
SPOTS=6 -----取模為6,范圍在0-5
die1=0
die2=0
------------2個變量名稱,保證每個平面選擇的數字記錄相同
let "die1 = $RANDOM % $SPOTS +1"
let "die2 = $RANDOM % $SPOTS +1"
let "throw = $die1 + $die2"
echo "Throw of the dice = $throw"
echo
exit 0
以下驗證結果:
[html]
Random number greater than 200 --- 25552
Throw of the dice = 5
[root@Slave02 shell]#
[html]
random number less than 500 --- 0
Random number greater than 200 --- 9765
Throw of the dice = 2
[root@Slave02 shell]#
[html]
Random number greater than 200 --- 31180
Throw of the dice = 10
[root@Slave02 shell]#
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.246062
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.619153
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.619153
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.619153
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.619153
[root@Slave02 shell]# sh random2.sh
Random number between 0 and 1 = 0.201116
[root@Slave02 shell]# cat random2.sh
#!/bin/bash
AWKSCRIPT='{ srand(); print rand() }' -srand中偽隨機的計算
echo -n "Random number between 0 and 1 = "
echo | awk "$AWKSCRIPT"
exit 0
[root@Slave02 shell]#