grep、sort、uniq命令详解
grep命令:
该命令用来在文本文件中查找指定模式的词或短语,并在标准输出上显示包括给定字符串模式的所有行.该命令组包含三个命令:grep,egrep 和 fgrep 命令.grep命令一次只能搜索一个指定的模式;egrep命令等同于grep -E,可以使用扩展的字符串模式进行搜索;fgrep命令等同于grep -F,是快速搜索命令,它检索固定字符串,但不识别正则表达式.
一般格式:
1 | grep [选项] 查找模式[文件名1,文件名2,…] |
说明:这组命令在指定文件中搜索特定模式及定位特定主题等方面用途很大.要搜索的模式被看做是一些关键词,查看指定的文件中是否包含这些关键词.这三个命令的功能类似,但由于可以搜索的模式不同,因此在功能强弱上有所差别.
如果没有指定文件,它们就从标准输入中读取.在正常情况下,每个匹配的行被显示到标准输出上.如果要搜索的文件不止一个,则在每一行输出之前加上文件名.
常用选项:
1 | -E 将查找模式解释成扩展的正则表达式. |
注意事项:
1 | 在命令名之后先输入搜索的模式,然后是要搜索的文件. |
示例: 在密码文件 /etc/passwd中查找包含”mengqc”的所有行:
1 | grep -F mengqc /etc/passwd |
在mengqc目录和子目录下的所有文件中查找字符串”print”出现的次数:
1 | grep –r 'print' mengqc |
在文件f1和f2中查找包含”main”或者”printf”的所有行,不管首字母的大小写:
1 | grep –E '[Mm]ain | [Pp]rintf' f1 f2 |
或者:
1 | grep –i 'main | printf' f1 f2 |
sort命令:
命令用来对文本文件的各行进行排序.
一般格式:
1 | sort [选项] 文件列表 |
说明:sort命令将逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上.如果不指定文件或者使用”一”表示文件,则排序内容来自标准输入.排序比较是依据从输入文件的每一行中提取的一个或多个排序关键字进行的.排序关键字定义了用来排序的最小的字符序列.在默认情况下,排序关键字的顺序由系统使用的字符集决定.
选项:
1 | -m 对己经排好序的文件统一进行合并,但不做排序. |
改变排序规则的选项主要有:
1 | -d 按字典顺序排序,比较时仅考虑空白符和字母数字符. |
以第3个字段作为排序关键字,对文件more_h10排序:
1 | sort –k2,3 more_h10 |
uniq命令:
该命令从排好序的文件中去除重复行.
一般格式:
1 | uniq [选项] 文件 |
说明:uniq命令读取输入文件,并比较相邻的行,去掉重复的行一行.该命令加工后的结果写到输出文件中.输入文件和输出文件必须不同.用”一”表示,则从标准输入上读取.
选项:
1 | -c 显示输出时,在每行的行首加上该行在文件中出现的次数. |
实例:
1 | uniq –u ex3 (显示文件ex3中不重复的行) |