- 論壇徽章:
- 0
|
原帖由 roong 于 2009-1-19 19:17 發(fā)表 ![]()
>>cat input.file
10| 2
30| 3
10| 4
20| 7
>>awk '$2=" ";1' input.file
10|
10|
30|
30|
10|
10|
20|
20|
>>awk '$2="";1' input.file
10|
30|
10|
20|
為什 ...
awk '$2=" ";1' input.file
等效于:
awk '($2=" "){print $0}
(1){print $0}' input.file
每行會(huì)執(zhí)行兩次條件判斷,活動(dòng)為全部缺省的print $0;
第1次的條件是賦值的結(jié)果,為" ",非空字符串,值為0.
有的系統(tǒng)當(dāng)值非零或字符串非空時(shí)均作為條件真來處理,這時(shí)為真(樓主的系統(tǒng)認(rèn)為值為0的非空字符串為條件真,我的系統(tǒng)也是).
也可能有的系統(tǒng)只認(rèn)數(shù)值非0才是條件真,這時(shí)就是假了.
如果你的awk版本認(rèn)為非空字符串為邏輯真時(shí),兩個(gè)條件均為恒真,所有行均被兩次用缺省活動(dòng)分別打印兩次.
如果你的awk版本認(rèn)為只有非0數(shù)值表達(dá)式才是邏輯真時(shí),第1條件均為恒假,第2個(gè)條件為恒真.所有行被第2個(gè)條件對(duì)應(yīng)的缺省活動(dòng)打印1次.
awk '$2="";1' input.file
等效于:
awk '($2=""){print $0}
(1){print $0}' input.file
條件為空字符時(shí),一定為邏輯假,第1個(gè)條件不成立,第2個(gè)條件恒為真.所有行被第2個(gè)條件對(duì)應(yīng)的缺省活動(dòng)打印1次.
[ 本帖最后由 zhangshebao 于 2009-1-20 01:56 編輯 ] |
|