AWK操作字符串的截取


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]#
 

相关内容

    暂无相关文章