欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《Unix & Linux 大学教程》 - 第十八章 学习笔记

程序员文章站 2022-05-05 23:32:50
...

学习笔记,内容基础,适合初学者。

 

阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记    Unix简介 & 什么是Linux?什么是Unix

《Unix & Linux 大学教程》 - 第三、四章 学习笔记    Unix连接 & 开始使用Unix

《Unix & Linux 大学教程》 - 第五、六章 学习笔记    GUI:图形用户界面 & Unix工作环境

《Unix & Linux 大学教程》 - 第七、八章 学习笔记    Unix键盘使用 & 能够立即使用的程序

《Unix & Linux 大学教程》 - 第九、十章 学习笔记    文档资料:Unix手册与Info & 命令语法

《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记    shell & 使用shell:变量和选项

《Unix & Linux 大学教程》 - 第十三章 学习笔记    使用shell:命令和定制

《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记     使用shell:初始化文件

《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记    过滤器:简介和基本操作
《Unix & Linux 大学教程》 - 第十八章 学习笔记    过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记    过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记  过滤器:选取、排序、组合及变换 正则表达式

《Unix & Linux 大学教程》 - 第二十一章 学习笔记  显示文件

《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记  vi文本编辑器(一)

《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记  vi文本编辑器 (二)

《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记  vi文本编辑器 (三)

《Unix & Linux 大学教程》 - 第二十三章 学习笔记  Unix文件系统

《Unix & Linux 大学教程》 - 第二十四章 学习笔记  目录操作

《Unix & Linux 大学教程》 - 第二十五章 学习笔记  文件操作

《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记  进程和作业控制

《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记  进程和作业控制

《Unix & Linux 大学教程》 - 附录F 时区与24小时制时间

 

 


第十八章:过滤器:统计和格式化

基础知识

 

命令/程序

nl

语法

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

start是起始号

increment是增量

file是文件名称

默认情况下,wl编号从1开始,wl不对空行编号!

nl作用:

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

2.当希望在命令的输出中临时插入行号

 

-v改变起始编号

-i:改变增量

-b(body numbering):正文编号,强制对所以空行编号(-b a)

-n(number format):数字格式(ln=左对齐,没有前导0;rn=右对齐,没有前导0;rz=右对齐,有前导0)

下面还是以/etc/passwd为例

nl -v 0 -i 2 -n ln /etc/passwd

编号指定从0开始,步长=2,左对齐,没有前导0,结果如下
《Unix & Linux 大学教程》 - 第十八章 学习笔记
            
    
    博客分类: Unix & Linux 大学教程 nlwcexpandfoldfmt 

nl -v 1 -n rn /etc/passwd

编号指定从1开始,默认步长=1,右对齐,没有前导0,结果如下
《Unix & Linux 大学教程》 - 第十八章 学习笔记
            
    
    博客分类: Unix & Linux 大学教程 nlwcexpandfoldfmt 

nl -n rz /etc/passwd

默认步长=1,右对齐,有前导0,结果如下
《Unix & Linux 大学教程》 - 第十八章 学习笔记
            
    
    博客分类: Unix & Linux 大学教程 nlwcexpandfoldfmt 

 

 

wc(word count)

语法

wc [-clLw] [file...]

file是文件名

默认情况下,wc的输出包含3个数字:数据中的行数、单词数和字符数。如果指定文件不只一个,wc将为每个文件显示一行输出,最后显示总和

作用:

统计行、单词和字符的数量

字符:就是字母、数字、标点符号、空格、制表符或者新行字符

单词:就是一串连续的字符,用空格、制表符或者新行符分隔

行:就是以新行字符结尾的一串字符

 

-l:统计行

-w:统计单词

-c:统计字符

-L:显示该文件中最长行的长度

 

统计文件夹下文件数量(不递归计算)

ls /etc | wc -l

查看现在有多数用户标识登录系统

echo "There are `who | wc -l` userids logged in right now"

 

 

空格与制表符的互换

expand

语法

expand [-i] [-t size | -t list] [file...]

size是固定宽度制表符的大小

list是制表位列表

file是文件名称

作用:

将输入文件中所以的制表符改变为空格,并且同时维持与原始文本相同的对齐方式。默认情况下,将制表位设置为每8个位置一个,因此输入中的每个制表符都将被输出中的1-8个空格替换。

 

-t:改变制表位。(-t size,表示设置制表位每隔size个字符一个;-t list表示制表位设置在在list位置中)

-i(initial,初始):转换行开头的制表符

 

下面命令将myfile的开头的每个tab(直到遇到有效字符)替换为4个空格

expand -i -t 4 myfile

如果行开头有4个tab,那么此行开头将被16个空格替换

 

unexpand

语法

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

size是固定宽度制表符的大小

list是制表位列表

file是文件名称

默认情况下,只替换行开头的空格。

 

-a:替换文中所有空格

-t:改变制表位。(-t size,表示设置制表位每隔size个字符一个;-t list表示制表位设置在在list位置中)

 

 

格式化

fold

语法

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

width是新行的最大宽度

file是文件名称

默认情况下,在位置80处分隔行,会分隔单词。

 

-w:指定每行的长度

-s:不分隔单词

 

 

fmt

语法

fmt [-su] [-w width] [file...]

width是新行的最大宽度

file是文件名称

 

默认情况下,假定段落由空行分隔,根据下述规则每次读取并格式化一个段落。

行宽:最大行宽=75。

句子:无论何时,尽可能地在句子末尾分隔行。

空白符:保持单词以及空行之间的所有缩进、空格。

制表符:在读取文件时,将所有的制表符转换成空格,并且在最后的输出中合适位置上插入新的制表符。

 

-w:指定每行的长度

-s(split only,仅拆分):拆分长行,但不连接短行

-u(uniform spacing,统一间距):使单词之间最多只有一个空格,而且句子末尾最多只有两个空格(fmt不增加空格)。

 

 

pr

语法按页格式化文本

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

beg是需要格式化的第一页

end是需要格式化的最后一页

text是标题中间的文本

n是每页的行数

margin是左边缘的大小

width是输出的宽度

file是文件名称

默认情况下,在顶端插入一个标题、左边插入一个边缘、底部插入一个页尾来格式化页面。标题和页尾各占5行。左边缘和页尾只用于间距,所以它们是空白的。但是标题在其中间行上包含信息:文件上一次修改的日期和时间、文件的名称以及页号(根据pr版本不同,这些细节可能会有变化)

默认情况下,pr不插入左边缘

pr假定一页有66行,标题和页尾各占5行

默认每行有72个字符

作用:按页格式化文本,使其适合打印。

 

-d:使用双倍行距

-h:指定标题中间部分的文本

-l:改变每页的总行数

-t:消除标题,页之间没有分隔

-W:改变输出宽度默认每行有72个字符

-o(offset,偏移):添加指定的左边缘,指定空格数量默认情况下,pr不插入左边缘

pr +begin[:end]:指定格式化的页面

fmt myfile | pr -d +3(对myfile格式化段落后,从第三页开始按页格式化,双倍行间距)

fmt myfile | pr -h "Title" +3:6(对myfile格式化段落后,第三页到第六页按页格式化,指定标题文本为“Title”)

 

语法按列格式化文本

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

columns是输出列的数量

lines是每页的行数

 

width是输出的宽度

file是文件名称

 

 

-m:在单独的列中输出每个文件

-数字:指定列的数量

fmt -w 35 myfile | pr -2 -l 48(对myfile以每行35个字符格式化段落后,按页格式化,每页48行,两列)

(pr默认每行72个字符,每列结尾至少有一个空格,所以就剩下70个字符,每列最多35个字符)

pr -m f1 f2 f3(将f1,f2,f3,三个文件格式化成3个单独的列)

 

 

名词解释:

tab(tabulate):制表

tab stop:制表位(老式打字机上的术语)

French spacing法国式间距句子末尾有两个空格,句子末尾前的问号和感叹号之前有一个空格。

 

 

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/