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

21 篇文章 1 订阅
8 篇文章 0 订阅

输出

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

输出语句

  1. print
    将 $0 打印到标准输出
  2. print expression, expression, …
    打印各个 expression, expression 之间由 OFS 分开, 由 ORS 终止
  3. print expression,expression,… > filename
    输出至文件 filename
  4. print expression,expression,… >> filename
    累加输出到文件 filename, 不覆盖之前的内容
  5. print expression,expression,… | command
    输出作为命令 command 标准输入
  6. printf(format,expression,expression,…)
  7. printf(format,expression,expression,…) > filename
  8. printf(format,expression,expression,…) >> filename
  9. printf(format,expression,expression,…) | command
    printf 类似于 print, 但是第 1 个参数规定了输出的格式
  10. close(filename), close( command)
    断开 print 与 filename (或 command) 之间的连接
  11. system(command)
    执行 command; 函数的返回值是 command 的退出状态
    printf 的参数列表不需要被包围在一对括号中. 但是如果 print 或 printf 的参数
    列表中, 有一个表达式含有关系运算符, 那么或者表达式, 或者参数列表, 必须用一对括号包围. 在非 Unix 系统上可能不提供管道与 system.
print 语句

print 语句具有形式:

print expression1, expression2,…,expressionn
print (expression1, expression2,…, expressionn)

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

输出分隔符

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

printf 语句

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

printf format,expression1,expression2,…, expressionn
printf(format,expression1,expression2, …, expressionn)

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

printf 格式控制字符表

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

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

$3 > 100 { print $1, $3 > “bigpop” }
$3 <= 100 { print $1, $3 > “smallpop” }

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

输出到管道

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

关闭文件与管道

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

close(“sort -t’\t’ +1rn”)

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值