AWK语言第二版 1.3 格式化输出

这篇具有很好参考价值的文章主要介绍了AWK语言第二版 1.3 格式化输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.3 格式化输出

前一节的 print 语句用于简单和快速的输出。如果对输出格式有更高要求,就要使用 printf 语句。本书后面的例子中,可以看到 printf 语句能生成几乎任意格式的输出,不过本节只会展示它的一小部分能力。细节可以参考附录 A.4.3。

对齐域

printf 语句的格式是

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

其中的 format 是一个字符串,包含了需要原样输出的文本,并在其中穿插着说明 value1~valuen 这些值要如何打印的规格(specification)。一个规格就是一个百分号 % ,后面跟着几个字符来控制value 的格式。第一个规格指定value1要如何打印,第二个规格指定value2要如何打印,以此类推。这样,format 里面有几个 规格,后面就要有几个value。(printf语句与标准C库函数里的printf函数基本完全一致)

下面这个程序用 printf 打印每个员工的薪水:

{ printf("total pay for %s is $%.2f\n", $1, $2 * $3) }

上面的规格字符串里面包含两个 % 规格,第一个是 %s,是说把第一个值,即 $1,作为字符串输出;第二个是 %.2f,是说把第二个值,即 $2 * $3,作为数字来输出,并且小数点后要留两位。

规格字符串里的其他东西,包括美元$符号,都是原样输出的;字符串结尾的 \n 表示换行,可以让后续的输出从下一行开始。用emp.data做输入,输出是:

total pay for Beth is $0.00
total pay for Dan is $0.00
total pay for Kathy is $155.00
total pay for Mark is $500.00
total pay for Mary is $495.00
total pay for Susie is $306.00

printf 不像 print 那样会自动打印空格或空行,要的话你得自己指定。如果你忘了 \n, 输出都会在同一行里。(可以去掉 \n 看看效果)

下面这个程序打印每个员工的姓名和薪水:

{ printf("%-8s $%6.2f\n", $1, $2 * $3) }

其中第一个规格 %-8s,把名字作为字符串输出,而且在8个字符宽度下左对齐;其中的减号用于表明左对齐(可以猜到带加号或者不带减号就是右对齐了)。第二个规格 %6.2f,把薪水作为数字输出,并且要求小数点后带两位数,6个字符宽:

Beth     $  0.00
Dan      $  0.00
Kathy    $155.00
Mark     $500.00
Mary     $495.00
Susie    $306.00

后面还会有很多printf的例子;完整的规格说明在附录A.4.3。

对输出排序

如果你想要打出每个员工的信息和他们的薪水,并按薪水增量排序,最简单的方法就是用Awk把薪水打印到员工信息前面,并将Awk的输出交给排序程序。

在Unix上,命令为

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

这会通过管道的方式把Awk的输出传给 sort 命令,最后结果如下:

  0.00  Beth     21      0
  0.00  Dan      19      0
155.00  Kathy    15.50   10
306.00  Susie    17      18
495.00  Mary     22.50   22
500.00  Mark     25      20

当然也可以在Awk里面写个高效的排序程序;第八章有个快速排序的例子。但大部分时间,用已有的工具比如 sort 是效率最高的。(不要自己发明轮子)文章来源地址https://www.toymoban.com/news/detail-689111.html

到了这里,关于AWK语言第二版 1.3 格式化输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python格式化输出

    偶然看到一种格式化输出这么写的 可以看到 %(key)s 包围的值可以通过字典对应的值指定 另外的格式化输出还有 \\\"\\\".format() , \\\"\\\" % , f\\\"{}\\\"

    2024年02月05日
    浏览(39)
  • Python基础—格式化输出

    一、旧式字符串格式化方法 %s、%d、%f等被称为占位符,%s对应字符串、%d对应整型、%f对应浮点型 %f -- 默认保留6位小数 %.Nf -- N为整数 %f -- 四舍五入 二、format方法 在字符串中写{},字符串外调用format方法,在format方法中传入值,按照一一对应的关系被写入对应的{} 作用为说明

    2024年02月08日
    浏览(48)
  • C++常用格式化输出转换

     在C语言中可以用printf以一定的格式打印字符,C++当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C++入门讲解第一篇。  在C++中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2个头文件( iomanip 和 ios )中,可以用输出运算

    2024年02月04日
    浏览(44)
  • fmt的格式化输入输出

    fmt 包是 Go 语言标准库中用于格式化输入和输出的包,它提供了丰富的函数来控制输出的格式,处理不同类型的数据,并且可以从输入源(如标准输入、文件)读取数据。下面将详细介绍 fmt 包的格式化输出和输入处理。 格式化输出 : fmt 包通过格式字符串来控制输出的格式

    2024年02月13日
    浏览(42)
  • 关于使用JS获取当前时间并格式化输出

    (1)逐个提取并拼接字符串 (2)一步到位提取年月日时分秒(重点) 首先,提取数据到数据 然后,拼接数据格式化输出 (附上,过程剖析)

    2024年02月03日
    浏览(56)
  • Python 格式化输出:精确控制你的数据表示

          目录 旧式的 % 运算符(不推荐) str.format() 方法 位置和参数: 格式化数字: f-string 表达式和函数调用: 格式化数字: 格式规范的微调 (核心) 对齐字符串 填充字符 数字的零填充 数字的千位分隔符 格式化十六进制、八进制和二进制         在编程语

    2024年01月17日
    浏览(60)
  • Python(21)json.dumps()使用indent参数 格式化输出json数据格式

    json.dumps() 方法 将一个Python数据结构转换为JSON字符串 输出为 这样的格式一般都不优美,当数据很多的时候,看得就不是很直观方便。 可以使用 indent=4 参数来对json进行数据格式化输出,会根据数据格式缩进显示,读起来更加清晰 用法如下 输出为 json.dumps()方法,参数解释

    2024年02月08日
    浏览(50)
  • Python中格式化字符串输出的4种方式

    Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’ 一、%号占位符 这是一种引入最早的一种,也是比较容易理解的一种方式.使用方式为: 1、格式化字符串中变化的部分使用占位符 2、变量以元组形式提供 3、变

    2024年02月06日
    浏览(53)
  • python %f格式化输出float的三种用法

    %f是python内置的格式化输出符号,主要用于输出浮点数,一般需要跟print()内置函数进行搭配使用。下面的内容将介绍三种%f的用法。 %f输出浮点数,可能会保留小数点后6位数,下方实例中,%f为格式化输出符号,第二个%符号则用于按顺序匹配对应的%f符号: %f输出指定小数点

    2024年02月15日
    浏览(42)
  • printf和scanf的串口重定向,格式化输入输出

    通过重定向C标准库的printf和scanf函数,实现串口的格式化输出; 调用MDK微库(MicroLib)的方法和调用标准库的方法。 我们使用的正点原子STM32F103RB NANO开发板上将USART1(引脚为PA9,PA10)接出 USART1并没有在PCB上连接在一起,需要通过跳线帽来连接一下。这里我们把 P5 的 RXD 和 TXD 用

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包