|
发表于 2004-4-15 19:13:13
|
显示全部楼层
最初由 home_king 发表
注意,我补充一下我的话,"扩域"(这里就是增加了$6)后,awk会打印$1~$n而非$0,其余情况打印$0。
关于$0的问题,请看下面例子,注意1{print $0}始终和缺省action时的输出结果是一样的,不仅仅"扩域",很多情况$0会重新计算,在此仅举数例参考.所以缺省action是print $0,只不过某些动作会使$0重新计算,并不是想象中的"awk会打印$1~$n而非$0",缺省动作就是print $0.
以上是实战分析,另外还有许多awk资料可以佐证,目前我还没有从任何资料中遇到教主的这种解释.
请教主不要介意,我说的有点直了.
- r2007@www $ awk -F: '1;1{print $0};1{print $1,$2,$3,$4,$5}' a
- Mike Harrington:(510)548-1278:250:100:175
- Mike Harrington:(510)548-1278:250:100:175
- Mike Harrington (510)548-1278 250 100 175
- Christian Dalsass:(408)538-2358:155:90:201
- Christian Dalsass:(408)538-2358:155:90:201
- Christian Dalsass (408)538-2358 155 90 201
- Susan Dalsass:(206)654-6279:250:60:50
- Susan Dalsass:(206)654-6279:250:60:50
- Susan Dalsass (206)654-6279 250 60 50
- r2007@www c $ awk -F: '{$6=11};1;1{print $0};1{print $1,$2,$3,$4,$5,$6}' a
- Mike Harrington (510)548-1278 250 100 175 11
- Mike Harrington (510)548-1278 250 100 175 11
- Mike Harrington (510)548-1278 250 100 175 11
- Christian Dalsass (408)538-2358 155 90 201 11
- Christian Dalsass (408)538-2358 155 90 201 11
- Christian Dalsass (408)538-2358 155 90 201 11
- Susan Dalsass (206)654-6279 250 60 50 11
- Susan Dalsass (206)654-6279 250 60 50 11
- Susan Dalsass (206)654-6279 250 60 50 11
- r2007@www c $ awk -F: '{NF--};1;1{print $0};1{print $1,$2,$3,$4}' a
- Mike Harrington (510)548-1278 250 100
- Mike Harrington (510)548-1278 250 100
- Mike Harrington (510)548-1278 250 100
- Christian Dalsass (408)538-2358 155 90
- Christian Dalsass (408)538-2358 155 90
- Christian Dalsass (408)538-2358 155 90
- Susan Dalsass (206)654-6279 250 60
- Susan Dalsass (206)654-6279 250 60
- Susan Dalsass (206)654-6279 250 60
- r2007@www c $ awk -F: '{$1=$1};1;1{print $0};1{print $1,$2,$3,$4,$5}' a
- Mike Harrington (510)548-1278 250 100 175
- Mike Harrington (510)548-1278 250 100 175
- Mike Harrington (510)548-1278 250 100 175
- Christian Dalsass (408)538-2358 155 90 201
- Christian Dalsass (408)538-2358 155 90 201
- Christian Dalsass (408)538-2358 155 90 201
- Susan Dalsass (206)654-6279 250 60 50
- Susan Dalsass (206)654-6279 250 60 50
- Susan Dalsass (206)654-6279 250 60 50
- r2007@www c $
复制代码 |
|