- 论坛徽章:
- 2
|
本帖最后由 287380917 于 2016-11-07 17:19 编辑
看到大神jason680在帮别人解决问题时发的语句:
- awk -F'[ ,]+' '{mag="\x5E\x20\x2B";sub(mag,ic);print $2}' a.txt
复制代码 研究了好久才看懂。
我自己写的语句在文本行首是否存在空格时运行的结果不一样,而大神的却很稳定,遂很好奇大神的语句为什么在这两种情况下都能稳定运行呢?sub在分割域之前就生效了?
实验一下:
- echo '1e2e3e4e'|awk -F 'e' '{sub("e","mm",$1);print $0}'
复制代码 运行结果:
1e2e3e4e
- echo '1e2e3e4e'|awk -F 'e' '{sub("e","mm",$1);print $1}'
复制代码 运行结果:
1
sub在指定域进行替换时是先进行域的划分、后进行替换的(当然也肯定是这样的,不然怎么指定域进行替换呢 )。
- echo '1e2e3e4e'|awk -F 'e' '{sub("e","mm");print $0}'
复制代码 运行结果:
1mm2e3e4e
- echo '1e2e3e4e'|awk -F 'e' '{sub("e","mm");print $1}'
复制代码 运行结果:
1mm2
sub未指定域(等同于$0)时是先进行替换后进行域的分割的。
好神奇,容易出错的地方自我记录下。
|
|