wc命令计算被提交到标准输入或是一个文件的行数,单词数,和字符数。命令的选项有-l,-w,-c。-l选项会显示行数,-w选项会显示字数,-c选项会显示字符数。选项的顺序没有要求,输出的结果都是按行,字和字符数排列。
由于wc从标准输入接收输入,并且将其结果写到标准输出,所以wc是一个过滤器。对一个文件执行wc不会影响到文件的内容。
其他例子
$ wc 回车计算从标准输入提供的输入
ab cde
fghijkl
mno pqr stuvwxyz
ctrl + d
3 6 32
$ wc < funfile 标准输入被文件funfile代替,不显示文件名。
105 718 3967
$ wc -w funfile
718 funfile
9.8 sort - 字母或数字排序
语法:
sort [-ndutX] [-k field_no] [file...] sort lines
例子:
$ sort funfilefunfile作为命令行参数提供
$tail -1 /etc/passwd
user3:xyzbkd:303:30:studentuser3:/home/user3:/usr/bin/sh
1 234567
$ sort -nt: -k 3 < /etc/passwd
$ who>whoson
$ sort whoson 以字母排列登录的用户名。
$ sort -u -k 1,1 whoson 排序时排除双倍行
sort命令强大而灵活。它能够依靠数字或字母来对一个文件的行排序。通过sort也能选择一行中的一个特殊的字段。sort也是一个过滤器,所以它也能从标准输入接收数据,但是它也会对作为命令行参数而提供的文件的内容进行排序,
sort选项sort类型
none 辞典(ASCII)
-d 目录(不处理非字母,数字,或空白的目录)
-n 数字
-u 唯一的(删除所有的双倍行)
字段之间的分隔符默认为空字符(一个空格或一个TAB)。你可以使用-t X选项来指定一个分隔符,其中X代表分隔符。由于冒号(:)在shell中没有特殊的意义,于是它通常被用来作为一个文件中的分隔符。
当你确定了字段之间的分隔符是什么,你就可以使用sort 的-K n 选项来通知sort命令,你想要基于那一个字段来排序,其中n代表sort将要排序的的字段号。sort命令假定字段号是由1开始的
sort命令支持多个选项来执行更复杂的操作。请使用man 来查找其具体用法。
其它例子
$ sort 回车排序的输入来自标准输入
mmmmm
xxxx
aaaa
ctrl + d
aaaa
mmmmm
xxxx
$ sort < funfile 标准输入被文件funfile代替
sort可以从标准输入接收数据,如上例,因此,你可以使用输入重定向从一个文件得到输入。
注意:shell不能同时打开同一个文件用作输入重定向和输出重定向。然而,sort选项-o output_file能被用来制造一个输出文件代替标准输出。这样,这个文件可以与输入文件同名。
这样做的最大好处就是:
如: sort -0 whoson -d whoson 可以在文件whoson内部执行一个目录的排序。
9.9 - 匹配模型(字符串搜索)
语法:
grep [-cinv] [-e] pattern [-e pattern] [file...]
grep [-cinv] -f patterns_list_file [file...]
例子:
$ grep user /etc/passwd
$ grep -v user /etc/passwd
$ grep -in -e like -e love funfile
$ who > whoson
$ grep rob whoson
grep命令十分有用。它通常使用一个模型作为它的第一个参数,使用任何数目的文件名作为它剩下的参数。在每一个模型前面使用-e参数,或在一个模型列表后面使用-f选项都可以让grep命令一次搜寻几个模型。这个命令会搜寻文件的每一行来查找指定的模型。然后grep命令会显示包含有这个模型的那些行。
grep有四个常用的参数:-n,-v,-i,和-c。
-c 仅仅显示匹配行的数目
-i 告诉grep忽略以下的模型中的字母。
-n 显示每一个显示行的行号。
-v 显示不包含模型的行
象所有的过滤器一样,如果没有指明文件,grep从标准输入读取数据,并且输出到标准输出。
grep 能够进行一些更复杂的搜寻。你可以提供一个你想要查找的文本的模型。这个模型叫做通用表达式。以下是一些通用表达式的特殊字符。
^ 匹配一行的开始
$ 匹配一行的结尾
. 匹配任何单字符
*先前的模型被重复0次或多次。
[] 字符类,指明一组字符
[ - ] 短斜杠指明一个字符的范围
[^ ] 切换选择的过程
为了避免shell解释特殊字符所产生的问题,最好使用引号来封闭通用表达式。