sub 只替换每行的第一个匹配字符,或者指定域的第一个匹配字符
gsub会替换当前行的所有匹配字符
[/tmp/test]# more tt1
50 IT China 800
10 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
10 DEVELOPER HOSTON 1300
[/tmp/test]# cat tt1 | awk 'sub(0,9)'--每行的第一个匹配字符0替换为9
59 IT China 800
19 ACCOUNTING LA 1100
29 RESEARCH DALLAS 560
39 SALES CHICAGO 2800
49 OPERATIONS BOSTON 5500
19 DEVELOPER HOSTON 1300
[/tmp/test]#cat tt1 | awk 'sub(0,9,$4)' --每行的第四列的第一个匹配字符0替换为9
50 IT China 890
10 ACCOUNTING LA 1190
20 RESEARCH DALLAS 569
30 SALES CHICAGO 2890
40 OPERATIONS BOSTON 5590
10 DEVELOPER HOSTON 1390
[/tmp/test]# cat tt1 | awk 'gsub(0,9)' --每行的所有匹配字符0全部替换为9
59 IT China 899
19 ACCOUNTING LA 1199
29 RESEARCH DALLAS 569
39 SALES CHICAGO 2899
49 OPERATIONS BOSTON 5599
19 DEVELOPER HOSTON 1399
[/tmp/test]# cat tt1 | awk 'sub(1,9)' --不匹配行的时候没有输出,需要加上print $0
90 ACCOUNTING LA 1100
90 DEVELOPER HOSTON 1300
[/tmp/test]# cat tt1 | awk '{sub(1,9);print $0}'
50 IT China 800
90 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
90 DEVELOPER HOSTON 1300
[/tmp/test]# cat tt1 | awk '{gsub(1,9);print $0}'
50 IT China 800
90 ACCOUNTING LA 9900
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
90 DEVELOPER HOSTON 9300
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24237320/viewspace-2063087/,如需转载,请注明出处,否则将追究法律责任。