bash grep 判断_shell--grep命令+正则表达式+基本语法

什么是正则

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。

在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,可以解释正则的有三种文本处理工具/命令:grep、sed、awk,今天我们先来熟悉grep。

Python也用到正则表达式,与此正则稍有区别,此处讲正则,可以加深我们的理解。

---------------------------------------------------------------------------------

grep

参数

-n  :显示行号

-o  :只显示匹配的内容

-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

-l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

-A  :如果匹配成功,则将匹配行及其后n行一起打印出来

-B  :如果匹配成功,则将匹配行及其前n行一起打印出来

-C  :如果匹配成功,则将匹配行及其前后n行一起打印出来

--color

-c  :如果匹配成功,则将匹配到的行数打印出来

-E  :等于egrep,扩展

-i  :忽略大小写

-v  :取反,不匹配

-w:匹配单词

下面我们可以做些练习:

-------------------------

正则介绍

^ 行首

$行尾

.除了换行符以外的任意单个字符

*前导字符的零个或多个

.*所有字符

[]字符组内的任一字符

[^]对字符组内的每个字符取反(不匹配字符组内的每个字符)

^[^]非字符组内的字符开头的行

[a-z] 小写字母

[A-Z] 大写字母

[a-Z] 小写和大写字母

[0-9] 数字

\

\>单词尾

? 前导字符零个或一个

+ 前导字符一个或多个

x{m} x出现m次

x{m,} x出现m次至多次(至少m次)

x{m,n} x出现m次至n次

abc|def 表示abc或def

a(bc|de)f 表示abcf 或 adef

扩展正则:grep -E 或 egrep

下面是一些练习:

------------------------------------------------------------

基本语法

什么是shell script

将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了.

再加上些智能(条件/流控)控制,就变成了智能化脚本了.

变量

part1 为何要有变量

程序的运行就是一些列状态的变量->用变量值的变化去表示

part2 变量命名规则

以字母或下划线开头,剩下的部分可以是:字母、数字、下划线.

最好遵循下述规范:

1.以字母开头

2.使用中划线或者下划线做单词的连接

3.同类型的用数字区分

4.对于文件最好加上拓展名

例如: sql_bak.tar.gz,log_bak.tar.bz2

part3 系统变量

set 和 env区别

set:显示所有变量

env:环境变量

part4 变量赋值

VARNAME=VALUE

echo $VARNAME

删除变量 unset VARNAME

part5 常用系统变量

PATH

PWD

LANG

HOME

HISTSIZE

PS1

IFS

域分隔符 是空格,换行,TAB键的合集

part6 全局变量与局部变量

[root@MiWiFi-R3-srv ~]# gender='male' #在爹这个位置定义一个局部变量gender

[root@MiWiFi-R3-srv ~]# export money=1000 #在爹这个位置定义一个全局变量money

[root@MiWiFi-R3-srv ~]#

[root@MiWiFi-R3-srv ~]#

[root@MiWiFi-R3-srv ~]# bash #切换到子bash

[root@MiWiFi-R3-srv ~]# echo $gender #在儿子这里看它爹的局部变量gender,结果为空->看不到

[root@MiWiFi-R3-srv ~]# echo $money #在儿子这里看它爹的全局变量money,可以看到

1000

[root@MiWiFi-R3-srv ~]#

[root@MiWiFi-R3-srv ~]# export hobby='piao' #在儿子这里定义一个全局变量hobby

[root@MiWiFi-R3-srv ~]# exit #退出,进入爹的bash环境

exit

[root@MiWiFi-R3-srv ~]# echo $hobby #爹是看不到儿子的export的,儿子的儿子可以看到

[root@MiWiFi-R3-srv ~]#

part6 定义变量名的边界

[root@MiWiFi-R3-srv ~]# rest_mem=20

[root@MiWiFi-R3-srv ~]# echo ${rest_mem}%

20%

part 7 数据类型

bash中的变量无须声明,拿来就用.默认的变量都会是字符类型,还可以有数字类型,普通的脚本,这两种类型够用了

运算符

part1 算术运算符

+

-

*

/

%

part2 关系操作

与(())连用

<

>

<=

>=

==

!=

&&

||

test命令相关,[]可以达到一样的效果

[root@MiWiFi-R3-srv ~]# x=1

[root@MiWiFi-R3-srv ~]# [ $x -gt 1 ]

[root@MiWiFi-R3-srv ~]# echo $?

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值