正则表达式 特殊符号系列 通配符系列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 特殊符号系列 通配符系列相关的知识,希望对你有一定的参考价值。

1.1 重定向符号

输出重定向 先清空文件,追加
> 追加输出重定向 追加
< 输入重定向 与 xargs tr
<< 追加输入重定向
cat 向一个文件追加多行。
cat >>/oldboy/alex.txt<<EOF
Love me, love my dog.
Love Li, love li‘s dog.
EOF
1.2 表示位置的

.(点) 当前目录
.. 当前目录上一级目录
~ 当前用户的家目录
1.3 特殊符号

注释 root用户的命令提示符
$ 取变量的内容(命令行) 取某一列(awk) 普通用户的命令提示符
! 查找最近一次使用过的命令然后执行 find排除/取反 awk取反 vim强制
history |grep awk
| 管道
; 分割多条命令。
1.4 引号系列

`` $()
‘‘ 所见即所得,原封不动显示出来
"" 解析特殊符号
1.5 简单判断

&& 前一个命令执行成功 ,执行后面的命令
ifdown eth0 && ifup eth0
|| 前一个命令执行失败,执行后面的命令
ls /alex || echo 目录不存在
通配符
2.1 什么作用?
方便大家查找出文件的(文件名)。
Linux大部分命令都支持。

.txt
.log
2.2 常见的通配符

2.2.1 所有 任何东西
以.txt结尾 .txt
以.log结尾 *.log

系统中以ls开头的文件。
find / -type f -name "ls*"

找出系统中文件名包含oldboy的文件。
find / -type f -name "oldboy"
2.2.2 {} 生成序列

echo {1..10}
echo {10..1}
echo {01..10}
echo {01..100}
echo {a..c}
echo {a..z}
echo {A..Z}

[[email protected] ~]# echo stu{01..10}
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
[[email protected] ~]# echo 20{01..10}
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010

2.3 通过{}
[[email protected] ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[[email protected] ~]# echo {a c f}
{a c f}
[[email protected]edu42-lnb ~]# echo {a,c,f}
a c f

[[email protected] ~]# echo A{B,C}
AB AC
[[email protected] ~]# echo A{,C}
A AC
[[email protected] ~]# echo oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[[email protected] ~]# touch oldboy.txt
[[email protected] ~]# cp oldboy.txt{,.bak}
cp: overwrite `oldboy.txt.bak‘? y
[[email protected] ~]# ls -l oldboy.txt
[[email protected] ~]# ls -l oldboy.txt
-rw-r--r-- 3 root root 0 Nov 11 23:50 oldboy.txt
-rw-r--r--. 1 root root 0 Nov 11 23:50 oldboy.txt.bak
-rw-r--r-- 3 root root 0 Nov 11 23:50 oldboy.txt-hard
[[email protected] ~]#
[[email protected] ~]# #cp oldboy.txt{,.bak}
[[email protected] ~]# echo oldboy.txt{,.bak}
oldboy.txt oldboy.txt.bak
[[email protected] ~]# echo A{,C}
A AC

2.4 通配符小结
1)查找文件
2)* {}

如何记住不忘记
1.看-思考-你认为你会了
2.命令-多敲
3.命令和知识点 流程图-绘制思维导图(processon.com + xmind)
4.绘图===回顾===整理
5.先走通路,然后变通
6.说出来,不会(先问问别人,然后再给别人说)

是否会了-总结:
1.绘图
2.说出来

正则表达式 RE regular expression
3.1 什么是正则 为何用它?

你可以通过什么方法选出这里面的×××号码。

440304199604012792
130528197108126121
3605sss98304033896
342923198310042132
1404ddddddddd5694X
61242619860416291X
5002xxxxxx04279521
330900199806382320
654126197703092303
131127197105115662

数字与X(在最后一位)

通过符号匹配查找出各种文字。
正则表达式通过特殊符号 ^ $ [] . * 表示各种各样的文字。

方便我们处理文本(日志)。

3.2 谁可以使用正则
三剑客正则(grep sed awk )
python java

3.3 正则表达式与通配符区别
正则---在文件中进行过滤(查找文件内容) 三剑客支持
通配符-找出文件(文件名) 大部分命令都可以使用

3.4 使用正则注意事项:
3.4.1 正则默认是按照行为单位处理。
3.4.2 一定要注意不要使用中文符号。
. ‘‘""^ `` ( ) {} [] <>
。‘’“”……··( ){}【】《》
3.4.3 给grep/egrep加上别名
cat >>/etc/profile<<EOF
alias grep=‘grep --color=auto‘
alias egrep=‘egrep --color=auto‘
EOF
source /etc/profile
查看是否更改:grep 3306 /etc/services

3.5 正则分类
基础正则: ^ $ . * []

扩展正则: + | () {} ?

3.6 环境准备
/oldboy/re.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!

3.7 基础正则-BRE basic regular expression
3.7.1 ^ ^m 表示以....开头的行
[[email protected] oldboy]# grep ‘^m‘ re.txt
my blog is http://oldboy.blog.51cto.com
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!

3.7.2 m$ 表示以....结尾的行
[[email protected] oldboy]# cat -A re.txt
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com $ #注意此处结尾是空格不是m
$
our size is http://blog.oldboyedu.com $ #注意此处结尾是空格不是m
$
my qq is 49000448$
$
not 4900000448.$
my god ,i am not oldbey,but OLDBOY!$

3.8 删除结尾的空格
[[email protected] oldboy]# vim re.txt

I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!

3.9 检查是否修改成功
[[email protected] oldboy]# cat -A re.txt
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com$
$
our size is http://blog.oldboyedu.com$
$
my qq is 49000448$
$
not 4900000448.$
my god ,i am not oldbey,but OLDBOY!$
[[email protected] oldboy]#
[[email protected] oldboy]# grep ‘m$‘ re.txt
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com

3.10 cat -A #显示出文件中所有的符号 $这一行的结尾
[[email protected] oldboy]# grep ‘ ‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
3.10.1 ^$ 空行 这一行里面什么都没有
[[email protected] oldboy]# grep -n ‘^$‘ re.txt
3:
6:
8:
10:

练习题:排查文件中的空行
[[email protected] oldboy]# grep -v ‘^$‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

4.1 . 任意一个字符 不会匹配空行
#grep -o ‘.‘ re.txt
#-o 显示grep的执行过程,grep每一次找出什么
grep -o ‘.‘ re.txt

#-o 显示grep的执行过程,grep每一次找出什么
#-o 的结果中 每一行表示 grep每次找出什么
[[email protected] oldboy]# grep ‘0‘ re.txt
my qq is 49000448
not 4900000448.
[[email protected] oldboy]# grep -o ‘0‘ re.txt
0
0
0
0
0
0
0
0
[[email protected] oldboy]# grep ‘00‘ re.txt
my qq is 49000448
not 4900000448.
[[email protected] oldboy]# grep -o ‘00‘ re.txt
00
00
00
4.1.1 撬棍 转义字符 去掉符号特殊含义 脱掉马甲,打回原形

显示出文件中 以.结尾的行?
[[email protected] oldboy]# grep ‘.$‘ re.txt
I teach linux.
not 4900000448.

撬棍系列 转义字符系列
====== 回车
4.1.2 * 前一个字符连续出现0次或0次以上

[[email protected] oldboy]# grep ‘0*‘ re.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[[email protected] oldboy]#
[[email protected] oldboy]# grep ‘0*‘ re.txt -o
000
00000

4.1.3 连续出现
4.1.4 正则表示连续出现的时候,会尽可能的匹配(吃)更多的符号 贪婪性
[[email protected] oldboy]# #0 表示0连续出现0次
[[email protected] oldboy]# #0 表示0连续出现1次及1次以上
[[email protected] oldboy]# #0
[[email protected] oldboy]# #000
[[email protected] oldboy]# #0000000
[[email protected] oldboy]# #0 表示0连续出现0次
[[email protected] oldboy]# #‘0‘ 只出现0次的时候 ====== ‘‘
[[email protected] oldboy]# #会把整个文件的内容都显示出来
[[email protected] oldboy]# grep ‘‘ re.txt
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!

4.2 小结正则之*:

1]] 贪婪性
2]] 连续出现

4.3 .* 所有 任何符号

#在正则中表示连续出现 表示所有 贪婪性
4.3.1 找出文件中以字母m开头的行 并且 以m结尾的行
grep ‘^m.*m$‘ re.txt
[[email protected] oldboy]# grep ‘^m‘ re.txt
my blog is http://oldboy.blog.51cto.com
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!
[[email protected] oldboy]# grep ‘^m‘ re.txt |grep ‘m$‘
my blog is http://oldboy.blog.51cto.com

[[email protected] oldboy]# grep ‘^m.*m$‘ re.txt
my blog is http://oldboy.blog.51cto.com

[[email protected] oldboy]# grep ‘^.*m$‘ re.txt
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
[[email protected] oldboy]# grep ‘m$‘ re.txt
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com

[[email protected] ~]# grep ‘.*m‘ re.txt

4.4 [] [abc] 表示一个整体,a或b或c任意一个字符

[[email protected] oldboy]# grep ‘[abc]‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!

grep ‘[abc]‘ re.txt -o
[[email protected] oldboy]# grep ‘[a-z]‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[[email protected] oldboy]# grep ‘[A-Z]‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my god ,i am not oldbey,but OLDBOY!
[[email protected] oldboy]# grep ‘[a-zA-Z]‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

4.5 #找出文件中以m或n开头的行
[[email protected] oldboy]# #第1个里程碑-m或n
[[email protected] oldboy]# grep ‘[mn]‘ re.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[[email protected] oldboy]# #第2个里程碑-以m或n开头的行
[[email protected] oldboy]# grep ‘^[mn]‘ re.txt
my blog is http://oldboy.blog.51cto.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

grep ‘[a-z]‘ re.txt
grep ‘[A-Z]‘ re.txt
grep ‘[0-9]‘ re.txt

以上是关于正则表达式 特殊符号系列 通配符系列的主要内容,如果未能解决你的问题,请参考以下文章

12.25 -特殊符号,通配符与正则表达式

12.25 -特殊符号,通配符与正则表达式

通配符 特殊符号与正则表达式

linux内特殊符号通配符正则表达式

通配符&正则表达式&特殊符号总结

Day15 - linux的特殊符号与正则表达式