浅谈 Linux命令过滤器 wc,sort ,grep

 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 funfilefunfile作为命令行参数提供

$tail -1 /etc/passwd

user3:xyzbkd:303:30:studentuser3:/home/user3:/usr/bin/sh

1 234567

$ 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解释特殊字符所产生的问题,最好使用引号来封闭通用表达式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值