您的位置:首页 > 其它

grep cut wc命令详解

2017-03-29 09:10 330 查看

1、grep命令

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression
Print,表示全局正则表达式版本

grep命令的用法很多,这里就说几个常用的

grep "your_search_content"  your_search_file  -[options] 

grep "your_search_content"  *    #只搜索当前目录所有文件里的内容,不含子目录里的内容
grep "your_search_content"  *  -r  #搜索当前目录和子目录所有文件
grep "your_search_content"  .  -r  #和上个命令类似
grep "your_search_content"  *Tes #搜索包含Tes的文件
需要注意的-r表示在当前目录及其子目录下搜索,当options里有r时your_search_file可以为.表示前目录,*则表示当前文件夹里所有内容,不包含子目录

[options]主要参数:

-c:只输出匹配行的计数。

-i:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-L:查询多文件时只输出不包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行,反向选择

-r:搜索当前目录及其子目录

-w:完全匹配,即匹配整个单词

-A?:查找某些字符的内容,并下延伸多少行

-B?:查找某些字符的内容,并上延伸多少行

-C?:查找某些字符的内容,并上和向下各延伸多少行 

-?:和-C类似上下各延伸多少行

注:?代表某个具体数字,这几行后面的数字直接影响延伸数量,并以--符号分割搜索行的结果,参数可以结合使用

grep "jason"  test.txt -A1 #在test.txt 中查询jason并下延一行
grep "jason"  test.txt-iA1#在test.txt 中查询jason不区分大小写并下延一行,等价于grep "jason"  test.txt-A1 -i
grep "jason"  . -rin #在当前目录及其子目录中查询jason不区分大小写,显示文本行号


在这就不一一举例了,-A后接数字后,不能再接其他参数会否则出错如

grep "jason" test.txt -A1i  #提示“grep: Invalid argument”


“your_search_content”可以是字符串,也可以是正则表达式,正则表达式主要参数:

\: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\<:从匹配正则表达 式的行开始。

\>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

。:所有的单个字符。

* :有字符,长度可以为0。

正则表达式和option一配合,grep命令就强大的不要不要的了,在这就不一一举例,自己平时用到就会知道了,下面说说两个简单实用的命令。

2、cut命令

cut:从一个文本文件或者文本流中提取文本列,有以下三种用法

usage: cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-s] [-d delim] [file ...]


cut -d '分隔字符' -f fields:-d指出特定分隔字符,-f 取出-d分隔的第几段

echo $PATH | cut -f 1 -d ':'#把path的值按:分隔,取出分隔的第一段
可以理解为java中split分隔字符串,返回数组 -f就是取数组中的某个值,只不过下标是1开始的,其中-f除了指定某个数字以外,还支持以下写法

echo $PATH | cut -f 1,3 -d ':'#把path的值按:分隔,取出分隔的第一个和第三个
echo $PATH | cut -f 1-3 -d ':'#把path的值按:分隔,取出分隔的第一个到第三个
echo $PATH | cut -f 2- -d ':'#把path的值按:分隔,取出分隔的第二个到最后一个
echo $PATH | cut -f 1-3,5 -d ':'#把path的值按:分隔,取出第一到第三个和第五个


cut -c list [file ...]:执行截取字符串操作,list支持的写法和-f一样,就不再多举例了

ls -l | cut -c 1,3 #截取流中每行的第一个和第三个
$ ls -l | cut -c 1,3
tt
dw


cut -b list [-n] [file ...]:只显示文件中1-10位置的字节,英文环境中和-c选项一样,但国际语言环境中有区别(如中文,字节和字符含义不同)

3、wc命令

统计文件里面有多少单词,多少行,多少字符

usage: wc [-clmw] [file ...]


-l  :仅列出行

-w  :统计词数

-m  :统计字符数

-c  :  统计字节数 英文环境和-m一样

$ wc /etc/passwd
91     249    5581 /etc/passwd
分别对应是行数,单词数,字节数
可以看出wc 默认是-lwc,wc的命令比较简单使用就上面四个可选参数,具体可以根据你的需求添加,后面有时间再继续整理下其它常用命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: