Unix & Linux 笔记(9)

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

18.1 创建行号:nl

在文本中插入临时行号。

nl [-v start] [-i increment] [-b a] [-n ln|rn|rz] [file…]
-v 起始行号 -i 增量 -b a(all),强制对所有行编号,body numbering -n number format(不常用) 
ln 左对齐,没有前导0
rn 右对齐,没有前导0
rz 右对齐,有前导0

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

wc [-c l L w] [file…]
-L 显示最长行的长度

18.3 Unix使用制表符的方式

制表位 tab stop
当终端遇到制表符时,它像打字机一样将光标移动到当前行的下一个制表位。

18.4 可视化制表符和空格

vi中查看,

:set list; :set nolist

制表符将显示为^I

18.5 将制表符转化成空格:expand

expand [-i] [-t size | -t list] [file...]
-i (initial)只转换行开头的制表符 -t 设置每个制表符为指定数字的宽度,而不是默认的8 -t 指定制表符位置列表,用逗号分隔

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

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

expandunexpand之间最大的区别就是在默认情况下,unexpand只把行开头的空格转换为制表符。这是因为大多数时候,只使用unexpand进行缩进,并不希望替换中间的所有空格。可以使用-a(all,全部)选项,unexpand将替换所有的空格,即使这些空格并没有位于行的开头。

18.7 格式化行:fold

fold [-s] [-w width] [file...]
-w width,最大长度 -s break at spaces

18.8 80字符行

18.9 格式化段落:fmt

fmt的目标就是将段落中的各行连接在一起,从而使段落尽可能的短小和紧凑,而且不会改变内容和空白符。

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

-u uniform space,统一间距,告诉fmt只减少空格,使单词之间最多只能有一个空格,句子末尾最多只能有两个空格。 -s split only,仅拆分长行,不连接短行(处理程序时)

18.10 打印的旧时代

打印作业

18.11 按列格式化文本:pr

pr
主要功能是按页格式化文本,使其适合于打印。
pr [-dt] [+beg[:end]] [-h text] [-l n] [-o margin] [-W] [file...]

-d 双倍行距
-t 消除标题,页之间没有了间隔
-o offset,默认情况下,pr不插入左边缘,因为打印机自动创建边缘
  • beg是需要格式化的第一页,
  • end是需要格式化的最后一页;
  • text是标题中间的文本;
  • margin是左边缘大小;
  • width是输出的宽度,
  • file是文件的名称。
calculate | pr | lp
fmt –s –w 45 essay | pr –d –o 5 –W 50 | lpr

字处理程序将每个段落存储为一个长行。

程序 行宽
fold 80字符/行
fmt 75字符/行
pr 72字符/行

18.12 按列格式化文本:pr

pr [-mt] [-columns] [-l lines] [-W width] [file...]
  • columns是输出的列数,
  • lines是每页的行数,
  • width是输出的宽度,
  • file是文件的名称。
fmt –w 35 article | pr -2 –l 48 > article-columns

在文本分列时,pr会盲目的截断太长的行。因此,如果文本所包含行的长度大于列宽,那么在将文本发送给pr之前必须使用fold –s或者fmt分隔行。

pr将多个文本分别格式化成单独的列,使用-m(merge)选项,pr将在单独的列中输出每个文件。

pr -m file1 file2 file3

你可能感兴趣的:(Unix & Linux 笔记(9))