特殊符号:

1.1 重定向符号

  1. 输出重定向 先清空文件,追加

  2. 追加输出重定向 追加

  3. < 输入重定向 与 xargs tr
  4. << 追加输入重定向
    cat 向一个文件追加多行。 cat >>/oldboy/alex.txt<<EOF Love me, love my dog. Love Li, love li's dog. EOF

1.2 表示位置的 06. .(点) 当前目录 07. .. 当前目录上一级目录 ~ 当前用户的家目录

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

1.4 引号系列 12. `` $()
13. '' 所见即所得,原封不动显示出来 14. "" 解析特殊符号

1.5 简单判断 15. && 前一个命令执行成功 ,执行后面的命令 ifdown eth0 && ifup eth0
16. || 前一个命令执行失败,执行后面的命令 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}

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

2.3 通过{} [root@oldboyedu42-lnb ~]# 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 [root@oldboyedu42-lnb ~]# echo {a c f} {a c f} [root@oldboyedu42-lnb ~]# echo {a,c,f} a c f

[root@oldboyedu42-lnb ~]# echo A{B,C} AB AC [root@oldboyedu42-lnb ~]# echo A{,C} A AC [root@oldboyedu42-lnb ~]# echo oldboy.txt{,.bak} oldboy.txt oldboy.txt.bak [root@oldboyedu42-lnb ~]# touch oldboy.txt [root@oldboyedu42-lnb ~]# cp oldboy.txt{,.bak} cp: overwrite `oldboy.txt.bak'? y [root@oldboyedu42-lnb ~]# ls -l oldboy.txt* [root@oldboyedu42-lnb ~]# 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 [root@oldboyedu42-lnb ~]# [root@oldboyedu42-lnb ~]# #cp oldboy.txt{,.bak} [root@oldboyedu42-lnb ~]# echo oldboy.txt{,.bak} oldboy.txt oldboy.txt.bak [root@oldboyedu42-lnb ~]# 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 表示以....开头的行 [root@oldboyedu42-lnb 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$ 表示以....结尾的行 [root@oldboyedu42-lnb 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 删除结尾的空格 [root@oldboyedu42-lnb 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 检查是否修改成功 [root@oldboyedu42-lnb 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!$ [root@oldboyedu42-lnb oldboy]# [root@oldboyedu42-lnb oldboy]# grep 'm$' re.txt my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com

3.10 cat -A #显示出文件中所有的符号 $这一行的结尾 [root@oldboyedu42-lnb 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 ^$ 空行 这一行里面什么都没有 [root@oldboyedu42-lnb oldboy]# grep -n '^$' re.txt 3: 6: 8: 10:

练习题:排查文件中的空行

[root@oldboyedu42-lnb 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每次找出什么 [root@oldboyedu42-lnb oldboy]# grep '0' re.txt my qq is 49000448 not 4900000448. [root@oldboyedu42-lnb oldboy]# grep -o '0' re.txt 00 00 00 00 [root@oldboyedu42-lnb oldboy]# grep '00' re.txt my qq is 49000448 not 4900000448. [root@oldboyedu42-lnb oldboy]# grep -o '00' re.txt 00 00 00 4.1.1 \ 撬棍 转义字符 去掉符号特殊含义 脱掉马甲,打回原形

   显示出文件中 以.结尾的行?

[root@oldboyedu42-lnb oldboy]# grep '.$' re.txt I teach linux. not 4900000448.

   撬棍系列 转义字符系列
   \n  ====== 回车

4.1.2 * 前一个字符连续出现0次或0次以上

[root@oldboyedu42-lnb 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! [root@oldboyedu42-lnb oldboy]# [root@oldboyedu42-lnb oldboy]# grep '0*' re.txt -o 000 00000

4.1.3 连续出现 4.1.4 正则表示连续出现的时候,会尽可能的匹配(吃)更多的符号 贪婪性 [root@oldboyedu42-lnb oldboy]# #0* 表示0连续出现0次 [root@oldboyedu42-lnb oldboy]# #0* 表示0连续出现1次及1次以上
[root@oldboyedu42-lnb oldboy]# #0 [root@oldboyedu42-lnb oldboy]# #000 [root@oldboyedu42-lnb oldboy]# #0000000 [root@oldboyedu42-lnb oldboy]# #0* 表示0连续出现0次 [root@oldboyedu42-lnb oldboy]# #'0*' 只出现0次的时候 ====== '' [root@oldboyedu42-lnb oldboy]# #会把整个文件的内容都显示出来 [root@oldboyedu42-lnb 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 [root@oldboyedu42-lnb 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! [root@oldboyedu42-lnb oldboy]# grep '^m' re.txt |grep 'm$' my blog is http://oldboy.blog.51cto.com

[root@oldboyedu42-lnb oldboy]# grep '^m.*m$' re.txt my blog is http://oldboy.blog.51cto.com

[root@oldboyedu42-lnb oldboy]# grep '^.*m$' re.txt
my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com [root@oldboyedu42-lnb oldboy]# grep 'm$' re.txt my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com

[root@oldboyedu-42mvp ~]# grep '.*m' re.txt

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

[root@oldboyedu42-lnb 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

[root@oldboyedu42-lnb 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! [root@oldboyedu42-lnb 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! [root@oldboyedu42-lnb 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开头的行 [root@oldboyedu42-lnb oldboy]# #第1个里程碑-m或n [root@oldboyedu42-lnb 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! [root@oldboyedu42-lnb oldboy]# #第2个里程碑-以m或n开头的行 [root@oldboyedu42-lnb 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