语法:
sub(original-string,replacement-string,string-variable)
1. sub 代表substitution.
2. original-string: 这是原字符串需要被替换的. 可以是正则表达式.
3. replacement-string: 这是替换字符串.
4. string-variable: 这作为输入和输出字符串变量。你必须要小心,因为成功的替换后,你失去了在这个字符串变量的原始值。
在下面的例子里:
1. original-string:这是正则表达式C[Aa],它可以匹配到"CA" or "Ca".
2. replacement-string: 当原字符串被发现, 用 "KA"替换它。
3. string-variable: 在执行sub之前, 变量包含输入字符串. 一旦替换完成, 变量包含输出字符串.
请注意,sub替换仅匹配发生一次。
$ cat sub.awk
BEGIN {
state="CA is California"
sub("C[Aa]","KA", state);
print state;
}
$ awk -f sub.awk
KA is California
第三个参数string-variavle是可选的。如果不指定,awk将使用$0(当前行),如下所示,这个例子替换记录开始2个字符从10到20。因此,项目编号101变成201,102变202,等等。
$ cat items.txt
101,HD Camcorder,Video,210,10
102,Refrigerator,Appliance,850,2
103,MP3 Player,Audio,270,15
104,Tennis Racket,Sports,190,20
105,Laser Printer,Office,475,5
$ awk '{sub("10","20");print $0;}' items.txt
201,HD Camcorder,Video,210,10
202,Refrigerator,Appliance,850,2
203,MP3 Player,Audio,270,15
204,Tennis Racket,Sports,190,20
205,Laser Printer,Office,475,5
当一个成功替换发生时,sub函数返回1,除此以外它返回0
只有当一个成功的替换发生时,打印记录。
$ awk '{if (sub("HD","High-Def")) print $0;}' items.txt
101,High-Def Camcorder,Video,210,10