linux之基础符号详解(中)

1,558 阅读2分钟

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

1.正则表达式(regular expression-RE) 练习的模拟环境:

cat >>oldboy.txt<<EOF
I am oldboy!
I teach linux
EOF

基础正则表达式 - basic regular expression - BRE 1)^ --- 以什么开头的信息找出来

测验一:找出以m开头的文件内容信息
grep '^m' oldboy.txt

grep命令特点:按行进行操作处理(过滤)
如何给grep命令匹配出来的信息标记颜色
给grep命令设置一个别名
alias grep='grep --color=auto'    临时设置
echo "alias grep='grep --color=auto'">>/etc/profile  永久设置
[root@fu ~]# source /etc/profile         加载

2)$ --- 找出以什么什么结尾的信息过滤出来

测验练习二:找出以m结尾的内容信息
[root@fu ~]# grep 'm$' oldboy.txt
my blog is http://oldboy.blog.51cto.com

3)^$ -- 找寻匹配空行信息(进行过滤)

测验练习题三:过滤空行信息

[root@fu ~]# grep -v '^m$' oldboy.txt   -v == !

I am oldboy !
I teach linux


4). -- 匹配任意一个字符信息且只能是一个字符信息(无法匹配空行信息)

grep '.' oldboy.txt

5)* -- 匹配0个或1次以上连续的字符信息(表示前一个字符连续出现1次或0次以上)

grep '0*' oldboy.txt
什么叫匹配了0次??

会匹配出文件找不到内容,预支匹配
默认会将所有内容都显示出来

6).* --- 匹配文件中的所有内容(可以匹配空行信息) grep '.*' oldboy.txt

测验xx:请找出文件中以m开头,一行中所有信息

[root@fu ~]# grep '^m.*' oldboy.txt

mygod ,i am not oldboy,but OLDBOY!

测验xx:请找出文件中以m开头,到m字符终止匹配

[root@fu ~]# grep '^m.*m' oldboy.txt

mygod ,i am not oldboy,but!
  1. \ -- 转移符号(中文--英文 英文--中文) 作用: 可以将有意义的符号,转换成没有意义 . 可以将没有意义的符号,转换成有意义的 \n .(匹配任意字符)-- . --加个撬棍一个点表示字符信息 -- \. --取消转译

测验练习题:将下面文件中一行信息,转换成一列显示

01 02 03 04 05

01
02
03
04
05
 tr "要进行替换的信息" "替换成什么信息" alex.txt

[root@fu ~]# tr " " "\n" <alex.txt   空格替换成换行符号
01
02
03
04
05

  1. [^abc] -- 排除/不匹配 指定字符信息
[root@fu ~]# grep "[^a-z]" oldboy.txt
I am oldboy !
I teach linux

[root@fu ~]# grep "^[^a-z]" oldboy.txt  不要以小写字母开头的句子
I am oldboy 

测验xx:找出以.结尾的相应行的信息 grep '.$' oldboy.txt

扩展正则表达式 - extended regular expression - ERE

    • --- 匹配1个或1次以上连续的字符信息
[root@fu ~]# egrep '0*' --color  oldboy.txt

I am oldboy !
[root@fu ~]# egrep '3*' --color  oldboy.txt

9)[]+ 组合的用处

[root@fu ~]# grep "[0-9]" oldboy.txt -o
5
1
4
9
0
0
0
4
4
8
4
9
0
0
0
0
0
4
4
8
[root@fu ~]# grep "[0-9]" oldboy.txt 
my blog is sss
[root@fu ~]# grep "[0-9]+" oldboy.txt 
[root@fu ~]# egrep "[0-9]+" oldboy.txt 

not 4900000448

10)| 表示匹配多个满足条件的信息(彼此之间是或者关系) egrep 'o|y|t' oldboy.txt

11)() 匹配一个整体信息(字符串信息) [a,usgduagd] 匹配中括号里面的一个一个元素信息

  表示匹配一个整体消息  egrep 'oldb(o|e)y' 表示过滤整体信息
  表示用于后项引用前项  sed -r 's#(.*)#</1>#g'  利用sed命令实现后项引用前项
                       sed -r  's#([0-9]+)#<\1>#g'利用sed命令实现后项引用前项
					   sed -r  's#(12)(34)(56)#<\1><\2><\3>#g'利用sed命令实现后项引用前项
  
  
  
  [root@fu ~]# egrep 'oldb[oe]y' oldboy.txt
  I am oldboy teacher!
  [root@fu ~]# egrep 'oldb(oe)y' oldboy.txt
  [root@fu ~]# egrep 'oldb(o|e)y' oldboy.txt
  I am oldboy teacher!