0
点赞
收藏
分享

微信扫一扫

awk编程?let‘s go(六) ---- 输出

未定义变量 2022-02-18 阅读 90

目录

输出

print 与 printf 语句可以用来产生输出. print 用于产生简单的输出; printf 用于产
生格式化的输出。来自 print 与 printf 的输出可以被重定向到文件, 管道与终端. 这两个语句可以混合使用。

print 语句

print 语句具有形式:

语句 printprint $0 的缩写形式. 为了打印空白行 (即只含有换行符的行), 可以这样写:print “”

输出分隔符

输出字段分割符与输出记录分隔符存储在内建变量 OFS 与 ORS 中. 初始情况下, OFS 与ORS 分别被设置成一个空格符与一个换行符, 但它们的值可以在任何时候改变。

printf 语句

printf 用于产生格式化的输出. 它与 C 语言中的 printf 函数很像, 但是 awk 的 printf不支持格式说明符 *. 与 print 一样, 它也有带括号与不带括号的两种形式:

参数 format 总是必须的, 它是一个变量, 其字符串值含有字面文本与格式说明符, 字面文本会按照文本的字面值输出, 格式说明符规定了参数列表中的表达式将被如何格式化地输出。

printf 格式控制字符表

字符含义
cASCII 字符
d十进制整数
e[-]d.ddddddE[±]dd
f[-]ddd.dddddd
g按照 e 或 f 进行转换, 选择较短的那个, 无意义的零会被抑制
o无符号八进制数
s字符串
x无符号十六进制数
%打印一个百分号 %, 不会有参数被吸收
输出到文件

重定向运算符 > 与 >> 用于将输出重定向到文件, 而不是原来的标准输出。下面这个程序将所有输入行的第 1 个与第 3 个字段输出到两个文件中: 如果第 3 个字段大于 100, 则输出到bigpop, 否则的话, 输出到 smallpop:

注意, 文件名必须用双引号括起来; 如果没有双引号的话, bigpop 与 smallpop 将被当作未初始化的变量. 文件名也可以是表达式或变量。
{ print > $1 } 将所有的输入行输出到以第 1 个字段命名的文件中。在 print 与 printf 语句中, 如果参数列表中的表达式包含有关系运算符, 那么, 表达式(或者是参数列表) 需要用括号括起来. 这样做是为了避免由重定向运算符 > 带来的歧义。

输出到管道

在支持管道的系统中, 也可以把输出重定向到管道, 而不仅仅是文件。语句
print | command 导致 print 的输出以管道的方式传递给 command。熟悉linux操作的人对这个操作应该都不陌生。

关闭文件与管道

语句 close(expression) 关闭一个文件或管道, 文件或管道由 expression 指定; expression 的字符串值必须与最初用于创建文件或管道的字符串值相同. 于是

关闭上面打开的排序管道。在同一个程序中, 如果你写了一个文件, 而待会儿想要读取它, 那么就需要调用 close。某一时刻, 同时处于打开状态的文件或管道数量最大值由实现定义。

本节的内容我们详细说明了 awk 的输出,包括格式化输出以及输出到文件和管道等,下节我们来了解 awk 的输入,我们下节见。

举报

相关推荐

0 条评论