1.排序文本
sort将输入看作具有多条记录的数据流,所谓记录就是以换行字符作为定界符的字串,而字段则是以空白字符或是用户指定的单个字符。sort 使用-k选项指定排序字段,并使用-t选项来选择字段定界符。默认空白分隔(记录内开头与结尾的空白都被忽略)。
-k的用法有:-k1(自该字段的起始到记录的结尾); -k1,1(仅以第一个字段);-k2.4(从第二字段的第四个字符开始);-k1nr(从第一个字段的起始到记录的结尾,但以把反向(从大到小)排序)
下面是常用的sort排序键值字段的类型:
b 忽略开头的空白
d 字典顺序
f 不区分字母的大小写
g 以一般的符点数字进行比较,只适用于GNU版本
i 忽略无法打印的字符
n 以(整数)数字比较
r 倒置排序的顺序
在字符排序中,字符常常会出现本地化,所以有必须知道字符值。可通过man io_8859_1查看字符值。也可通过八进制打印工具:od,可用ASCII和八进制显示单词。
2 删除重复
uniq 提供一种过滤数据的方法,用于删除已使用sort排序完成的重复记录。
常用的有3个选项: -c可在每个输出行之前加上该行重复的次数。 -d用于仅显示重复的行。 -u仅显示未重复的行。
3重新格式化段落
fmt 并非POSIX标准,但GNU是支持的,可通过coreutils包安装。
有两个选项常用: -s仅切割较长的行,但不会将短行结合成较长的行。-w n 则设置输出行宽度为n个字符(默认通常约75个左右)。
4计算行数、字数以及字符数
wc 默认输出是一行报告,包括行数、字数以及字节数。
-c 选项原来是表示字符数,但因为有多字节字符集的编码存在(UTF-8),因此在当前系统上,字节数已经不再等同于字符数,POSIX使用-m选项计算多字节字符。-l 计算行数。-w 计算字数。
5打印
BSD系统仅支Berkeley风格,POSIX只定义了lp命令。
Berkeley System V 用途
lpr lp 传送文件到打印队列
lprm cancel 从打印队列中删除文件
lpq lpstat 报告队列状态
6提取开头或结尾数行
提取开头方法:
head -n n files
head -n files
awk 'FNR <= n' files
sed -e nq (或忽略 -e:sed nq) files
提取结尾:
tail -n n file
tail -n
7 一些常用工具
dd 以用户指定的块大小与数量拷贝数据,可进行大小写转换,以及ASCII与EBCDIC间的转换。
iconv 可以将文件从一种编码集转换成另一种更具灵活性的字码集。
file 将其参数文件内容的前几个字节,与样式数据库进行比对,再在标准输出下,针对各文件显示一行简短报告。
strings 针对输入数据查找以换行符号或NUL结尾的四个(或以上)可打印字符的序列,再将结果打印到标准输出。