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命令就强大的不要不要的了,在这就不一一举例,自己平时用到就会知道了,下面说说两个简单实用的命令。
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选项一样,但国际语言环境中有区别(如中文,字节和字符含义不同)
统计文件里面有多少单词,多少行,多少字符
usage: wc [-clmw] [file ...]
-l :仅列出行
-w :统计词数
-m :统计字符数
-c : 统计字节数 英文环境和-m一样
$ wc /etc/passwd
91 249 5581 /etc/passwd
分别对应是行数,单词数,字节数
可以看出wc 默认是-lwc,
wc的命令比较简单使用就上面四个可选参数,具体可以根据你的需求添加,后面有时间再继续整理下其它常用命令。