- 論壇徽章:
- 1
|
[ 本帖最后由 helloclei 于 2015-09-15 10:31 編輯 ]
正在看《awk與sed第三版》的電子版,第二章最后有一個(gè)關(guān)于州排序的問(wèn)題,如下:
[backcolor=Yellow][root@localhost shell]# cat list
John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA[/backcolor]
nameState腳本內(nèi)容如下:
[backcolor=Yellow][root@localhost shell]# cat nameState
s/MA/, Masschusetts/
s/VA/, Virginia/
s/OK/, Oklahoma/
s/PA/, Pennsylvania/
s/CA/, California/[/backcolor]
byState內(nèi)容如下:
[backcolor=Yellow][root@localhost shell]# cat byState
#!/bin/bash
awk -F, '{
print $4", "$0
}' $*|
sort|
awk -F, '
$1 == LastState {
print "\t" $2
}
$1 != LastState {
LastState = $1
print $1
print "\t" $2
}'[/backcolor]
執(zhí)行的結(jié)果如下:
[backcolor=Yellow][root@localhost shell]# sed -f nameState list| bash byState
California
Amy Wilde
Masschusetts
Eric Adams
John Daggett
Sal Carpenter
Oklahoma
Orville Thomas
Pennsylvania
Terry Kalkas
Virginia
Alice Ford
Hubert Sims[/backcolor]
問(wèn)題:
請(qǐng)問(wèn) $1 == LastState 這個(gè)判斷是怎么定義的?書(shū)里說(shuō)LastState是指上一個(gè)記錄的州名,但是前面沒(méi)有定義過(guò)這個(gè)變量,awk程序怎么會(huì)知道它就是上一條記錄的州名呢? |
|