linux 命令grep正则表达式

Linux 命令grep正则表达式

在linux里面有处理文本的三剑,现在我要说的就是grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vi grep ,awk ,sed 等都支持正则表达式.。正则表达式有基本正则表达式和扩展正则表达式。

grep默认就是基本表达式。

基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配。

扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样。

1、 grep命令

grep 【参数】 搜索文件

参数:

--color=auto:对匹配到的串做高亮显示

-v:显示模式匹配不到行

-i:忽略字符大小写;

-o:仅显示能够被模式匹配到的串本行

-q: 静默模式

-E:使用扩展的正则表达式

-n: 顺便输出行号

基本正则表达式的元字符:

字符匹配:

.: 匹配任意单个字符;

[]:匹配指定范围内的任意单个字符;

[^]:匹配指定范围内的任意单个字符;

次数匹配:用于要指定其次数的字符的后面;

*: 任意次;

\?:0或1次;

\+:1或多次;

\{m\}:精确限制为m次;

\{m,n\}: 至少m次,至多n次,[m,n]

\{0,n\}:至多n次;

\{m,\}:至少m次;

.*: 匹配任意长度的任意字符;

位置锚定:

^: 行首锚定;用于模式的最左侧;

$: 行尾锚定;用于模式的最右侧;

\<,\b: 词首锚定;用于表示单词的模式的左侧;

\>, \b:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行;

分组:\(\)

分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...

\1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;

后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

2、egrep命令

扩展正则表达式的元字符:

字符匹配:

.: 任意单个字符

[]:

[^]:

次数匹配:

*

?: 0次或1次;

+: 1次以上;

{m}: 精确匹配m次;

{m,n}: 至少m次,至多n次;

锚定:

^: 锚定行首

$: 锚定行尾

\<, \b

\>, \b

分组:()

题:显示/etc/passwd文件中以bash结尾的行

-bash-4.1#grep --color ‘bash$‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
Oracle:x:3000:3000::/home/database:/bin/bash
51CTO:x:3001:3001::/home/51CTO:/bin/bash

题:显示/etc/passwd文件中的两位数或三位数

-

bash-4.1#grep --color ‘\b[[:digit:]]\{2,3\}\b‘ /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:Systemmessage bus:/:/sbin/nologin

题:显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

-bash-4.1#netstat -tan |grep --color ‘LISTEN[[:space:]]*$‘
tcp        0     0 0.0.0.0:111                0.0.0.0:*          LISTEN     
tcp        0     0 0.0.0.0:22                 0.0.0.0:*                   LISTEN     
tcp        0     0 127.0.0.1:631              0.0.0.0:*                   LISTEN     
tcp        0     0 127.0.0.1:25               0.0.0.0:*                   LISTEN

题:添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

-bash-4.1#grep --color ‘\(bash\).*\1‘ /etc/passwd
bash:x:3002:3002::/home/bash:/bin/bash
testbash:x:3003:3003::/home/testbash:/bin/bash
basher:x:3004:3004::/home/basher:/bin/bash
-bash-4.1#grep --color ‘^\(nologin\).*\1‘ /etc/passwd
nologin:x:3005:3005::/home/nologin:/sbin/nologin

题:显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

-bash-4.1#grep -E --color ‘^root|^centos|^user1‘ /etc/passwd | cut -d: -f1,3,7
root:0:/bin/bash
centos:3006:/bin/bash
user1:3007:/bin/bash

题:找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

-bash-4.1#grep --color ‘.*()‘ /etc/rc.d/init.d/functions
fstab_decode_str(){
checkpid(){
__readlink(){
__fgrep(){
__umount_loop(){
__umount_loopback_loop(){

题:使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

-bash-4.1#echo /etc/sysconfig/network-scripts/ifcfg-eth0 |grep --color ‘.*‘
/etc/sysconfig/network-scripts/ifcfg-eth0
-bash-4.1#echo /etc/sysconfig/network-scripts/ifcfg-eth0 |egrep --color -o ‘^/.*/‘
/etc/sysconfig/network-scripts/

题:找出ifconfig命令执行结果中1-255之间的数字

-

bash-4.1#ifconfig | egrep --color‘\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[1-9][0-9]|25[0-9])\>‘
eth0      Link encap:Ethernet  HWaddr 00:0C:29:7E:E8:80 
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe7e:e880/64Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX bytes:791817 (773.2 KiB)  TX bytes:379603 (370.7 KiB)
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536 Metric:1
时间: 2024-09-29 18:26:51

linux 命令grep正则表达式的相关文章

Linux 命令——grep | 正则表达式

感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小不同.egrep是grep的扩展,支持更多的re元字符, fgrep就是fixe

Linux 命令grep, egrep,正则表达式大全

Linux grep 命令     Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版

linux 命令grep

grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行. grep命令的语法: grep  ‘word’  文件名 grep  ‘word’  文件1  文件2  文件3 grep  ‘字符串1  字符串2’  文件名 commad  |  grep  ‘ 某个东西 ’ commad  选项1  |  grep  ‘ 数据 ’ grep  --color  ‘数

Linux 命令 - grep: print lines matching a pattern

grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --help 打印帮助信息 -V, --version 打印版本信息 Matcher Selection -E, --extended-regexp 使用基本正则表达式(ERE)解释 PATTERN -F, --fixed-strings 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式.

每天一个linux命令-grep

Linux中grep命令是一个强大的文本搜索工具,它能使用正则表达式匹配文件,并将匹配的内容进行打印输出.grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来),他的使用权限是所有用户. 命令格式 grep [option] pattern filename 命令参数 -a,--text : 不要忽略二进制数据 -A,--after-context=NUM: 除了显示符合范本样式的那一列

linux命令grep及正则表达式

搞搞Linux命令--grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的结果被送到标准输出,不影响原文件内容. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成

Linux命令:grep命令 文本搜索

linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep这个应用程序最早由肯·汤普逊写成.grep原先是ed下的一个应用程序,名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印). grep是非常强大的命令,配合管道一起使

Linux命令grep和find相关使用

一.Linux的alias命令的了解,alias命令主要是设置别名,简单话就是把一长串命令,简单到几个字符都可以实现相同原来.例如查看设置ip地址配置文件,但是我们使用别名就很简单如果在命令行设置,只是临时的,如果推出终端或者推出当前用户,别的用户登录,就无法使用,为了永久使用,就需要写到配置文件中.但是有两种配置,一种只针对这个用户的,还有是所有用户的1.针对当前用户的,只需要在用户的家目录里面设置.bashrc这个文件2.针对所有用户,需要在/etc/bashrc进行设置,在文件的最后添加这