grep [-A] [-B] [--color=auto] '搜寻字符串' filename
参数
-A : 后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来; -B :后面加数字,为befer的意思,除了列出该行外,后面的n行也列出来
[root@www ~]# dmesg | grep -n --color=auto 'eth' (dmesg列出内核信息)
[root@www ~]# dmesg | grep -n -A2 -B3 --color=auto 'eth' (让关键字的前两行与后三行都显示出来)
在~/.bashrc内加上alias grep='grep --color=auto' ; 再以"source ~/.bashrc" 来立即生效。
基础正则表达式联系
语系已经使用"export LANG=C"的设置值; grep 已经使用alias设置“grep --color=auto”
查找特定字符串
[root@www ~]# grep -n 'the' regular_express.txt 取得‘the’内容
[root@www ~]# grep -vn 'the' regular_express.txt 反向选择
[root@www ~]# grep -in 'the' regular_express.txt 无论大小写
利用中括号[]来查找集合字符
[root@www ~]# grep -n 't[ae]st' regular_express.txt 无论[]有几个字符,都代表一个字符
[root@www ~]# grep -n '[^g]oo' regular_express.txt 不想要oo前面有g,集合字符的反向选择[^] 来完成
[root@www ~]# grep -n '[^a-z]oo' regular_express.txt oo前面不想有小写字符
[root@www ~]# grep -n '[0-9]' regular_express.txt 取得有数字的那一行
[root@www ~]# grep -n '[^[:lower:]]oo' regular_express.txt [:lower:] 代表的就是a-z的意思
[root@www ~]# grep -n '[^[:digit:]]' regular_express.txt
[root@www ~]# grep -n '^the' regular_express.txt 行首为'the'的
[root@www ~]# grep -n '^[a-z]' regular_express.txt 小写字母开头的
[root@www ~]# grep -n '^[[:lower:]]' regular_express.txt 小写字母开头的
[root@www ~]# grep -n '^[^a-zA-Z]' regular_express.txt 开头不是英文字母的
[root@www ~]# grep -n '^[^[:alpha:]]' regular_express.txt 开头不是英文字母的
^在[]内代表“反向选择”;在[]之外代表定位在行首的意义;
[root@www ~]# grep -n '\.$' regular_express.txt 行尾结束为小数点(.) 那一行
小数点具有其他意义,所以必须使用转移字符(\)来加以解除其特殊意义。
[root@www ~]# cat -An regular_express.txt | head -n 10| tail -n 6
windosw的断行字符(^M$) linux($)
[root@www ~]# grep -n '^$' regular_express.txt 找出空白行
[root@www ~]# grep -v '^$' /etc/syslog.con | grep -v '^#' 不要空白行,不要#那行
.(小数点):代表一定有一个任意字符的意思;*(星号):代表重复前一个0到无穷多次的意思,为组合形态;
[root@www ~]# grep -n 'g..d' regular_express.txt
[root@www ~]# grep -n 'ooo*' regular_express.txt
[root@www ~]# grep -n 'goo*g' regular_express.txt
[root@www ~]# grep -n 'g*g' regular_express.txt
[root@www ~]# grep -n 'g.*g' regular_express.txt
[root@www ~]# grep -n '[0-9][0-9]*' regular_express.txt
[root@www ~]# grep -n 'o\{2\}' regular_express.txt 2个o以上的字符串
[root@www ~]# grep -n 'go\{2,5\}g' regular_express.txt 2-5个o的字符串
[root@www ~]# grep -n 'go\{2,\}g' regular_express.txt 2个以上的o的字符串
基础正则表达式字符
RE字符
^word 意义:待查找的字符串在行首;^$ 意义:待查找的字符串在行尾;. 意义:一定有一个任意字符的字符;\ 意义:转义字符,将特殊的符号的特殊意义去除;* 意义:重复零到无穷多个的前一个字符;[list] 意义:从字符集和的RE字符里面找出想要选取的字符; [n1-n2] 意义:从字符集和的RE字符里面找出想要选取的字符范围;[^list] 意义:从字符集和的RE字符里面找出不要的字符串或范围 ; \{n,m\} 意义: 连续n到m个的前一个RE字符,若为\{n\} 则是连续n个前一个RE字符,若为\{n,\}则是连续n个以上的前一个RE字符
正则表达式的特殊字符与一般在命令行输入命令的“通配符”并不相同。
阅读(1089) | 评论(0) | 转发(0) |