awk

OFS-输出字段分隔符

FS是输入字段分隔符。OFS为输出字段分隔符。OFS是打印连续字段之间。默认awk输出字段分隔符为空格。

$ awk -F ',' '{print $2, $3}' employee.txt
John Doe CEO
Jason Smith IT Manager
Raj Reddy Sysadmin
Anand Ram Developer
Jane Miller Sales Manager
$ awk -F ',' '{print $2, ":", $3}' employee.txt
John Doe : CEO
Jason Smith : IT Manager
Raj Reddy : Sysadmin
Anand Ram : Developer
Jane Miller : Sales Manager

正确的做法是使用awk内置变量OFS(输出字段分隔符),如下所示

下面打印语句是打印两个变量($2和$4)使用逗号隔开,然后该输出将使用冒号分隔(而不是空格),因为我们的OFS设置为冒号。

$ awk -F ',' 'BEGIN { OFS=":" } { print $2, $3 }' employee.txt
John Doe:CEO
Jason Smith:IT Manager
Raj Reddy:Sysadmin
Anand Ram:Developer
Jane Miller:Sales Manager

请注意,在打印语句(打印多个变量时)里包括一个逗号和不包括逗号之间的微妙差别。当你指定一个逗号在打印语句两个变量之间时,awk将使用OFS.在下面的例子,使用默认的OFS,因此你将看到一个空格在两个变量输出之间。

$ awk 'BEGIN { print "test1","test2" }'
test1 test2

当你在打印语句里不使用逗号分隔变量时,awk将不使用OFS;打印变量之前将什么都没有

$ awk 'BEGIN { print "test1" "test2" }'
test1test2