匹配、排序及查找命令

  grep命令用来在指定文本文件中查找指定模式的单词或短语,并在标准输出上显示包括给定字符串模式的所有行,命令选项如下表所示。要搜索的模式就被看做是一些关键词、查看指定的文件中是否包含这些关键词。在使用时,如果没有指定文件,它们就从标准输入中读取。在正常情况下,每个匹配的行被显示到标准输出上。如果要搜索的文件不止一个,则在每一行输出之前加上文件名。命令格式为:

grep [options] filename

  grep命令的选项

选项

功能说明

-E

将查找模式看成是扩展的正则表达式

-F

将查找模式看成是单纯的字符串

-b

在输出的每一行前面显示包含匹配字符串的行在文件中位置,用字节偏移量来表示

-c

只显示文件中包含配置字符串的行的总数

-i

匹配比较时不区分字母的大、小写

-r

以递归方式查询目录下的所有子目录中的文件

-n

在输出包含匹配模式行之前,加上该行的行号

【例1】 在配置文件/etc/passwd 中查找包含字符串/neo)的所有行。

[root@localhost ~]# grep -F neo /etc/passwd
root:x:0:0:neo:/root:/bin/bash
neo:x:500:500::/hone/neo:/bin/bash

  sort命令将逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上。如果不指定文件名或者使用“ - ”表示文件,则排序内容来自标准输入。系统默认按照字符的ASCIⅡ编码顺序排序,如果要逆序排序,需要使用选项-r。
命今格式为:

sort [options] filename

【例2】系统中有文件file,txt,对它按行进行排序。

greedao排序 grep 结果排序_Linux

  在ASCII编码表中,%、1、a、A的编码分别为37、49、65、97,所以出现以上的排序结果。sort命令还有其他的排序规则,需要使用到不同的选项来引用。

  uniq命令读取输入文件,并比较相邻的行,去掉重复的行,只留下其中的一行。该命令加工后的结果存放到输出文件中。输入文件和输出文件必须不同,如果没有指明输入文件,则将结果显示到终端。
命令格式为:

uniq [options] inputfile outfile

常用选项说明如下。
  -c:显示输出时,在每行的行首加该行在文件中出现的次数。
  -d:只显示重复行。
  -u:只显示文件中的不重复行。

【例3】删除文件filel.txt中重复的相邻行,将结果保存到file2.txt里。

greedao排序 grep 结果排序_字符串_02

  find命令用于在目录结构中搜索文件,并执行指定的操作。find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。命令格式为:

find [起始目录] 选项 操作

  说明如下。
  (1)起始目录:find命令所查找的目录路径。例如,用“.”来表示当前目录,用“/”来表示系统根目录。

  (2)find命令常用选项如下。

  -name:按照文件名查找文件。

  -perm:按照文件权限来查找文件。

  -user:按照文件属主来查找文件。

  -mtime -n +n:按照文件的更改时间来找文件,一n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
  -type:查找某一类型的文件。

  (3)操作:当查找出文件后所进行的命令处理,一般用-exec选项,后面跟所要执行的命令或脚本,然后是一对{ },一个空格和一个\,最后是一个分号。使用示例如下:

$ find $ HOME - print     //查找当前用户主目录下的所有文件
$ find. - type f - perm 644 - exec ls - l { } \;//列出当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
$ find / - type f - size 0 - exec ls-l { } \;//查找系统中所有文件长度为0的普通文件,并列出它们的完整路径