linux 正则 只保留中间内容,linux的正则表达式

在介绍正则表达式之前,必须先解释下与linux通配符的关系。通配符代表的是bash操作接口的一个功能,而正则表达式是一种字符串处理的表达方式。

基本的正则表达式:

元字符:

. :匹配任意多个字符

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

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

[:digit:]、[:alpha:]、[:alnum:]、[:lower:]、[:upper:]、[:space:]、[:punct:]

匹配次数:

* :匹配其前面的字符任意次

\? : 匹配其前面的字符0次或者1次

\{m,n\}:匹配其前面的字符最少m次,最多n次

位置锚定:

^:此字符后面的任意内容必须出现在行首

$  : 此字符前面的任意内容必须出现在行尾

^$ 空白行

\

\>或\b:锚定词尾,此字符前面的任意字符必须作为单词的尾部出现

分组:\(\)     例如 \(ab\)*,这里存在一个后向引用的问题\1引用第一个左括号以及与之对应的右括号所包括的所有内容 \2、\3以此类推。

扩展正则表达式:

元字符:没有区别   . 、[]、[^]、以及类似的集合文件:[:digit:]、[:alpha:]、[:upper:]、[:lower:]、[:alnum:]、[:space:]

次数匹配:*、?

不同之处:+ 匹配其前面的字符1次或者多次

{m.n}:这里不需要加'\'

位置锚定:^$  \

不同之处:分组:()  \1,  \2,  \3

或者|: or

grep:

扩展的是egrep = grep -e

grep [options] PATTERN [FILE...]

-i 忽略大小写    --color   -v显示没有没模式匹配到的行   -o只显示被模式匹配到的字符串

-E 使用扩展正则表达式  -A# :列出该行以后的#行    -B#:列出该行以前的#行  -C#:列出该行前后的#行

此前我已经在本地目录下alias grep='grep --color' ,然后source  .bashrc

1.查找/proc/meminfo文档中以字母s开头的文档,不区分大小写

grep -i  '^s'  /proc/meminfo

2.显示/etc/passwd文档中以/sbin/nologin结尾的行

grep  '/sbin/nologin$'  /etc/passwd

3.取出默认shell为bash,且其用户ID号最小的用户的用户名

grep '.*bash$' /etc/passwd | sort -n -t : -k3 | cut -d : -f1 | head -n 1

4. 显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行

grep ':[[:digit:]]:' /etc/inittab

5.显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

grep '^[[:space:]]\{1,\}'  /boot/grub/grub.conf

6.显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行

grep '^\([[:digit:]]\).*\1$' /etc/inittab

7.显示/proc/cpuinfo文件中的一位数和两位数

grep -E '[[:digit:]]{1,2}' /proc/cpuinfo

8.找出ifconfig命令结果中1-255之间的整数

ifconfig | grep -E '\'

9.分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep '^l\([[:digit:]]\):\1.*\1$' /etc/inittab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值