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}
- [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
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- [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
来源: http://www.bubuko.com/infodetail-2708965.html