cat
贴出一个文件的内容,从文件中获取输入,并将该文件内容输出到标准输出。
cat指令功能虽然简单,但是配合重定向,它就可以将一个文件内容送给任何可以从标准输入获取数据的工具来进行处理。
head
用于显示一个文件的前几行。
指令格式:
$ head [OPTION]... [FILE]...
head指令用于从文件头开始显示几行,它比cat多出了可以按行选择文件中需要输出的部分。同cat一样,它默认从文件中获取内容,输出到标准输出。当需要对某个文件的头几行、几十行等内容进行文本处理时,head指令就可以帮上忙。
实例:
若只需要/etc/passwd文件前三行内容,并将它送给column指令处理,可以像向下面这样处理:
$ head -3 /etc/passwd | column -s: -t
tail - 用于显示一个文件的后几行
指令格式:
$ tail [OPTION]... [FILE]...
tail指令用于从文件结尾开始显示几行,与head指令的作用刚好相反。同样,tail指令从文件中获取数据,输出到标准输出。
实例:
比如需要/etc/passwd文件的第3到10行,可以像下面这样做:
$ head -10 /etc/passwd | tail -7
wc
用于统计一个文本流有多少的字符、单词或单位行
根据使用的选项的不同,wc指令可以对文件进行按字符、单词和行进行统计。
常用选项:
-c 打印文件的字节数
-m 打印文件的字符数
-w 打印文件的单词个数
-l 打印文件的行数
-L 打印文件的最长一行的长度
–files0-from=F 从文件F中获取文件名
不带任何选项的wc指令将分别打印文件的行数、单词数、以及行数。
实例:
需要注意的是对于中文文本,需使用选项m来获取文件的中文字符个数。比如获取/etc/passwd文件的行数:
$ wc -l /etc/passwd
tr
用于把一组字符转化为另一组字符,或者删除特定字符
指令格式:
$ tr [OPTION]… SET1 [SET2]
tr指令从标准输入获取文本流数据,因此常备用在管道的后端进行字符过滤处理,用来转换或删除文本流的中的指定的字符(集)。
常用选项:
-c 取后边SET1字符集合的补集
-d 删除出文本中出现的包含在SET1字符集中的字符
-s 压缩字符,若文本流中某个字符出现在SET1中且连续多次,则压缩成一个字符,即把多个重复字符变成一个字符
-t 先将文本中出现的包含在SET1中的字符序列截断到字符集SET2的长度,然后进行一一对应的转换
所谓字符集,就是一组字符的集合,对于tr指令而言,更精确地说字符集就是一个字符串。字符集的表示方式如下:
CHAR1-CHAR2 从字符CHAR1到CHAR2的所有字符
[CHAR*] 出现在SET2中,表示重复CHAR字符,直到SET2字符集的长度与SET1长度相同
[CHAR*REPEAT] 重复CHAR字符REPEAT次,这里REPEAT可以十进制或者八进制(以0开始)数字
[:alnum:] 表示所有的字母和数字组成的字符集
[:alpha:] 表示所有字母组成的字符集
[:lower:] 表示所有小写字母组成的字符集
[:upper:] 表示所有大写字母组成的字符集
[:print:] 表示所有可打印的字符组成的字符集,包括空白字符
[:blank:] 表示所有水平空白字符集合
[:cntrl:] 表示所有的控制字符
[:space:] 表示所有的空白字符(包括水平空白字符和垂直空白字符)
这里CHAR表示一个字符,可以是一般可表示的字符,如大小写字母或者数字,也可以是转义字符。转义字符的定义类似于C语言中的转义字符,常用的几个如下:
\n 换行符
\r 回车符
\t 水平制表符
实例:
将一个文件中所有大写字母转换成成小写字母:
$ cat test.txt | tr 'A-Z' 'a-z'
$ tr 'A-Z' 'a-z' < test.txt # 等价于上面的形式
使用tr指令需要注意,它并不能直接从文件获取数据,它从标准输入获取数据,因此通常放在管道右边来过滤字符。
sort
用于对文件进行排序,默认排序方式是ascii字符集的顺序。
常用选项:
-b 忽略前置的空白字符
-d 只考虑字母、数字字符
-M 按月份英文名(三字母缩写)
-n 用于按数字排序,而非按数字字符的ascii码排序
-r 反向排序
–files0-from=F 从文件F中获取文件名
实例:
使用sort对文件的内容进行排序时一定要注意是以什么标准进行排序的,因此上面提到的选项是非常重要的。如下:
$ sort -r test1.txt test2.txt
这条指令对文件test1.txt和文件test2.txt进行合并,然后反向排序并输出。
uniq
打印重复单词中的一个,加上特定选项可以计算重复单词出现的次数。
uniq [-c] file
选项含义如下:
c 计算重复单词出现的次数,输出两列,一列是单词出现次数,一列是单词
需要注意的uniq只能用于已经排序的文本才能起到计算或剔除重复的文本行的效果。
一个组合上面的命令的有用的命令如下:
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -nr | head -10
这条指令的作用就是打印用户最常用的10条命令。