awk print与printf的差别

awk中如果输出字符的话,有两种处理方式。printfprint,两种方式存在着不同,下面简要的说明下。

printf:可以自定义输出的模式,另外输出内容之后不自动换行

print:输出内容之后自动换行

example

file

11111_22222_33333_44444_55555_66666

awk -F’_’ ‘{for(i=1;i<=NF;i++)print $i}’ file

11111

22222

33333

44444

55555

66666

awk -F’_’ ‘{for(i=1;i<=NF;i++)printf $i}’ file

111112222233333444445555566666

所以可以看出,print输出一个内容之后,自动换行,但是printf不会这样,另外如果我们需要在处理文本的过程中输出换行符的话,可以print “”,输出一个空字符就表示输出了一个换行符。

file2

name1 1 2 3 4 5 6

name2 2 3 4 5 6 7

name3 3 4 5 6 7 8

如果想要的结果为

name1 12 34 56

name2 23 45 67

name3 34 56 78

处理方式为:

awk '{printf $1;for(i=2;i<=NF;i=i+2)printf " "$i$i+1;print ""}' file2

注意开始的时候输出的是$1,此时注意不会输出换行符,另外如果输出$1$2这样子输出的话,不会输出字段分隔符空格,但是如果输出$1,$2的话,中间有逗号的话,就会输出字段分隔符。另外最后的print””,表示输出一个换行符进行下一行的处理。

你可能感兴趣的:(awk)