高级输出

print语句可用于快速而简单的输出。若要严格按照所想的格式化输出,则需要使用printf语句

printf 几乎可以产生任何形式的输出,但在本节中,仅展示其部分功能。

自定义输出格式

printf 语句的形式如下:

#  和Golang的prinf一样的用法

printf(format, value1, value2, ..., valuen)  

# 第一个规格说明如何打印 value1 ,第二个说明如何打印 value2 ,... 。因此,有多少 value 要打印,在 format 中就要有多少个 % 规格。

其中 format 是字符串,包含要逐字打印的文本, format 之后的每个值该如何打印的规格用%定义。一个规格是一个 % 符,%后面跟着一些字符,用来控制一个 value 的格式。

printf 不会自动产生空格或者新的行,必须必须自己来创建,所以不要忘了 \n

排序输出

最简单的方式是使用awk将需要排序的字段放在每一行记录的最前面,然后利用一个排序程序来处理awk的输出:

awk '{ printf("%6.2f    %s\n", $2 * $3, $0) }' emp.data | sort

# 将awk的输出通过管道传给 sort 命令

按照第二和第三字段的乘积进行排序。

拆分文件

awk拆分文件很简单,使用重定向就好了。下面这个例子,是按第6例分隔文件,相当的简单(其中的NR!=1表示不处理表头)。

也可以把指定的列输出到文件:

再复杂一点:(注意其中的if-else-if语句,可见awk其实是个脚本解释器)

环境变量

怎么和环境变量交互:(使用-v参数和ENVIRON,使用ENVIRON的环境变量需要export)

最后更新于