Unix&Linux大学教程:18 过滤器:统计和格式化

 

 

18 过滤器:统计和格式化

 

18.1 创建行号:nl

        相关过滤器:wc

        功能:在文本中插入行号

        语法:       nl [-v start] [-i increment] [-b -a] [-n ln | rn | rz] [file...]

 

        使用场景:

                1.希望在一些数据中永久插入行号,然后再保存;

                2.希望在命令的输出中临时插入行号,以便于理解。

 

        从100开始编号:

                nl -v 100 data

        从1开始编号,但增量是5:

                nl -i 5 data

        从100开始编号,但增量是5:

                nl -v 100 -i 5 data

        从100开始编号,但增量是5,包括空行在内的所有行都编号,数字是右对齐的,而且有前导0:

                nl -v 100 -i 5 -b a -n rz data

        注:ln:左对齐,没有前导0;rn:右对齐,没有前导0;rz:右对齐,有前导0;

 

18.2 统计行、单词和字符数量:wc

        相关过滤器:nl

 

        语法:

                wc [-clLw] [file...]

                -c 统计字符 -l 统计行 -w 统计单词 -L 输入中最长行的长度             

 

        输出:

                默认时,数据中的行数,单词数,字符数。

 

        记忆:

                行(line),单词(word),字符(Character),"Look at Women Carefully".

        应用:

                统计/etc目录中文件的数量:   ls /etc | wc -l

 

                说明有多少用户登录当前系统:      echo "There are `who | wc -l` userids logged in right now."

 

18.3 Unix使用制表符的方式

 

18.4 可视化制表符和空格

        expand程序将制表符变成空格

        unexpand程序将空格变成制表符

        使用wc -c 可以查看上述两程序是否工作正常

 

18.5 将制表符转换成空格

        相关过滤器:unexpand

        语法:expand [-i] [-t size | -t list] [file...]

                size是固定宽度制表符的大小(默认为8),list是制表位列表,而file是文件名。

 

        例:

                expand -t 4 data > data-new             (-t,设置制表符间隔)

                expand -t 7,15,21,56 data > data-new    (-t,设置制表符位置)

                expand -i -t -4 data > data-new         (-i,只转换行开头的制表符)

                expand -t 4 data | cut -c 1-15 | sort

 

18.6 将空格转换成制表符:unexpand

        相关过滤器:expand

        语法:

                unexpand [-a] [-t size | -t list] [file...]

 

        unexpand是expand的逆过程。

        两者的重要区别:默认情况下,unexpand程序只替换行开头的空格。使用-a(all)选项,则可以替换所有的空格。

 

18.7 格式化行

        相关过滤器:fmt、pr

        3者关系:fold处理行,fmt处理段落,pr处理页面和列

        语法:

                fold [-s] [-w width] [file...]

                width是新行的最大宽度

                默认:fold在80处分隔行。

 

        例:

                将一文件重新格式化为每行不超过40个字符,并保存在另一文件中:

                        fold -w 40 ling-lines > short-lines

                告诉fold不分隔单词:

                        fold -s -w 40 speech

 

18.8 80字符行

        介绍了80字符行的由来,还顺便介绍了IBM公司。

 

18.9 格式化段落:fmt

        相关过滤器:fold,pr

        语法:fmt [-su] [-w width] [file...]

                -u(uniform spacing):统一间距;-s(split only):拆分长行,但不连接短行

 

18.10 打印的旧时代

 

18.11 按页格式化文本:pr

        相关过滤器:fold,fmt

        语法:

                pr [-dt] [+beg[:end]] [-h text] [-l n] [-o margin] [-W width] [file...]

                beg是需要格式化的第一页,text是标题中间的文本;n是每页的行数;margin是左边缘的大小;width是输出的宽度;file是文件名。

 

 

18.12 按列格式化文本

        语法:       pr [-mt] [-columns] [-l lines] [-W width] [file...]

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值