zl程序教程

您现在的位置是:首页 >  后端

当前栏目

grep命令经常使用參数及使用方法

方法命令 经常 grep 參数 使用
2023-09-11 14:15:01 时间

1、grep介绍


grep命令是Linux系统中一种强大的文本搜索工具,它能使用正則表達式搜索文本。并把匹 配的行打印出来。grep全称Global Regular Expression Print,表示全局正則表達式版本号,它的使用权限是全部用户。

grep可用于shell脚本,由于grep通过返回一个状态值来说明搜索的状态,假设模板搜索成功,则返回0,假设搜索不成功,则返回1,假设搜索的文件不存在,则返回2。


2、grep经常使用參数


-a :将 binary 文件以 text 文件的方式搜寻数据 
-c :计算找到 '匹配字符串' 的次数 
-i :忽略大写和小写的不同。所以大写和小写视为同样 
-n :顺便输出行号
-v :反向选择。亦即显示出没有 '搜寻字符串' 内容的那一行!

比方test.txt文件内容例如以下:
1000 20 nan
1001 21 nv
1002 23 Nan

//忽略大写和小写进行匹配并显示行号
grep -ni 'nan' test.txt

1:1000 20 nan
3:1002 23 Nan

//忽略大写和小写进行”非“匹配 并显示行号
grep -ni 'nan' test.txt

2:1001 21 nv


3、grep正則表達式


Re 含义
^word 待匹配的字符串(word)在行首!


如:grep '^1000' test.txt
返回:1000 20 nan

word$ 待匹配的字符串(word)在行末!
如:grep 'nv$' test.txt
返回:1001 21 nv
. 代表随意一个字符,一定是一个随意字符!
搜寻的字符串能够是 (eve) (eae) (eee) (e e), 但不能仅有(ee) 。亦 即e 与e 中间一定仅有一个字符,而空格符也是字符!
如:grep 'n.n' test.txt
返回:1000 20 nan
\ 转义字符,特殊字符如 ' {  }
如:grep -n \' test.txt
匹配含有单引號'  的那一行!

* 反复零个或多个的前一个RE 字符,注意*号前面一定要有字符
如:grep 'n*' test.txt
返回:1000 20 nan
    1001 21 nv
            1002 23 Nan
\{n,m\} 连续n 到m 个的前一个RE 字符
若为\{n\} 则是连续n 个的前一个RE 字符,
若是\{n,\} 则是连续n 个以上的前一个RE 字符!
[ ] 字符集合的RE 特殊字符的符号
[abc]:表示匹配a或者b或者c
[a-z]:表示匹配a,b,c,...z这26个字母中不论什么一个
[^a-z]:表示字符串的开头仅仅要不是小写字母a-z。则都能匹配成功
[a-z$]:表示字符串的结尾仅仅要是小写字母a-z。则都能匹配成功


扩展的正則表達式:egrep 'pattern' file.txt   或者用  grep -E 'pattern' file.txt

Re 含义
+ 反复『一个或一个以上』的前一个RE 字符
如:egrep -n 'go+d' regular_express.txt
则:(god) (good) (goood)等会匹配成功
?

『零个或一个』的前一个RE 字符
如:egrep -n 'go?d' regular_express.txt
则:(gd) (god)等会匹配成功
| 用或( or )的方式找出数个字符串
如:egrep -n 'gd|good' regular_express.txt
则:匹配gd 或good 这两个字符串
() 找出『群组』字符串
如:egrep -n 'g(la|oo)d' regular_express.txt
则:匹配(glad) 或(good) 这两个字符串