AWK的数组
awk的數組很神奇,我的感覺。
awk的數組可以使用數字當索引,可以使用字符串來當索引
1、使用數字做下標
info[1]="one"
info[2]="two"
info[3]="three"
[xiaomo@ArchLinux ~]$ echo 'one two three' | awk '{info[1]=$1;info[2]=$2;info[3]=$3;print info[1],info[2],info[3]}'
one two three
[xiaomo@ArchLinux ~]$?
2、使用字符串(下標不加引號)做下標
info[one]="awk"
info[two]="sed"
info[three]="grep"
[xiaomo@ArchLinux ~]$ echo "awk sed grep" | awk '{info[one]=$1;info[two]=$2;info[three]=$3;print info[one],info[two],info[three]}'
grep grep grep
[xiaomo@ArchLinux ~]$?
看到它們之間的不同了嗎?如果使用字符串(下標不加引號)做下標,只會保留最后一個下標的值。
3、使用字符串(下標加引號)做下標
info["one"]="awk"
info["two"]="sed"
info["three"]="grep"
[xiaomo@ArchLinux ~]$ echo "awk sed grep" |awk '{info["one"]=$1;info["two"]=$2;info["three"]=$3;print info["one"],info["two"],info["three"]}'
awk sed grep
[xiaomo@ArchLinux ~]$?
這次又不同了, 如果使用字符串(加上引號)做下標,結果都是單獨保存下來了。
那么來看看下面的吧。
[xiaomo@ArchLinux ~]$ echo "awk sed grep ls" \
awk '{info["one"]=$1;info["two"]=$2;info["three"]=$3;info["three"]=$4;print info["one"],info["two"],info["three"],info["three"]}'
awk sed ls ls
[xiaomo@ArchLinux ~]$?
你是否已經暈了呢?
別著急,其實很簡單而已。
使用字符串(不加引號)當下標,awk會把他們識別為相同的下標,所以只會保留最后一個下標的值。
使用字符串(加引號)當下標則相反,不會識別為相同的下標。但是呢,如果字符串(加引號)當下標,遇到相同的下標一樣會只保留最后一個下標的值。
你是否看懂了?
不懂必須來找我。
轉載于:https://blog.51cto.com/xiaofengmo/1750093
總結
- 上一篇: HBase 6、用Phoenix Jav
- 下一篇: Error:(108) No resou