Linux运维学习笔记-通配符及正则表达式知识总结

 

通配符:

 

*

代表所有

 

?

任意一个字符

 

两个命令的分隔符

 

#

注释

 

|

管道,将|前命令的执行结果作为|后命令的输入

 

~

用户的家目录

 

-

上一次的目录

 

$

变量前面需要加的符号

echo $LANG

/

路径分隔符

 

重定向(覆盖)

 

>> 

追加重定向

 

输入重定向

xargs、tr

<< 

追加输入重定向

cat

''

单引号,不具有变量置换功能,输出时所见即所得

echo 'date'

""

具有变量置换功能,解析变量后输出,不加引号相当裕双引号

echo "`date`"

``

反引号,两个`` 中间为命令,会先执行,等价$()

echo "$(date)"

{}

中间为命令区块组合或内容序列

 

逻辑运算中的"非"(not)

 

&&

and 并且,当前一个指令执行成功时,执行后一个指令

 

||

or 或者,当前一个指令执行失败时,执行后一个指令

 

..

上一级目录

 

.

当前目录

 

 

 

 

 

 

正则表达式为处理大量字符串而定义的一套规则和方法。

常用于(grep\awk\sed)

注意事项:

1、linux正则表达式一般以行为单位进行处理的。

2、alias grep='grep –color=auto'让匹配的内容显示颜色。

3、注意字符集,export LC_ALL=C

 

例子:

cat >>oldboy.log<<GONGLI

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 site is http://www.etiantian.org

my qq num is 49000448

not 4900000448.

mygod,i am not oldboy,but OLDBOY!

GONGLI

 

 

 

示例:

grep    -n显示行号,-v排除,-o只显示匹配到的内容,默认匹配行

 

过滤出以m开头

[root@ctc oldboy]# grep "^m" oldboy.log

my blog is http://oldboy.blog.51cto.com

my qq num is 49000448

mygod,i am not oldboy,but OLDBOY!

过滤出以m结尾

[root@ctc oldboy]# grep "m$" oldboy.log  

my blog is http://oldboy.blog.51cto.com

过滤出空行

[root@ctc oldboy]# grep -n "^$" oldboy.log

3:

8:

[root@ctc oldboy]#

 

过滤掉除空行外的所有

[root@ctc oldboy]# grep -nv "^$" oldboy.log

1:I am oldboy teacher!

2:I teach Linux.

4:I like badminton ball,billiard ball and chinese chess!

5:my blog is http://oldboy.blog.51cto.com

6:our site is http://www.etiantian.org

7:my qq num is 49000448

9:not 4900000448.

10:mygod,i am not oldboy,but OLDBOY!

只过滤除指定字符

[root@ctc oldboy]# grep -o "qq" oldboy.log      

qq

 

 

 

 

示例:

 

 

 

 

 

 

 

 

示例:

 

 

 

 

 

 

 

 

 

 

 

 

grep:

 

 

 


 

 

元字符:

\b 单词边界

\n 换行

 

 

Sed:

stream editor    Linux三剑客老二,流编辑器,实现对文件的增删改替换查。

参数:-n    取消默认输出,-i    修改文件内容,-e    允许多项编辑
功能:

p打印。

s与g联合使用时,表示对当前行全局匹配替换。

s常说的查找并替换,用一个字符串替换成另一个。

例子:sed -i s#oldboy#oldgirl#g a.txt

#是分隔符,可以用/@等替换

 

 

 

 

 

 

Awk:

awk    过滤、输出内容,一门语言。NR 行号。

$1    第一列,$2    第二列依次类推,但$0表示一行,NF表示最后结尾一列。

NR表行数
-F    指定分隔符。

命令的语法始终是:awk '{pattern + action}' 或者 awk 'pattern {action}'。

例子:awk -F % 'NR>=7,NR<=15 {print $1 $3 $7}' myfile

 

posted @ 2018-03-18 14:02  chhshichenhaha  阅读(154)  评论(0编辑  收藏  举报