自动化运维之shell引号和正则表达式(二)
1 shell引号
1)反斜线\
转译
echo * 显示当前目录中所有的文件列表
echo \* 显示*字符
换行
find / \ 换行输入多行命令
> -name "test.txt" \
> -type f \
> -size +5M
find / -name "test.txt" -type f -size +5M
2)单引号''
单引号将它中间的所有任意字符还原为字面意义,实现屏蔽shell元字符的功能,单引号必须成对出现。
echo ‘$HOME’
echo 'test\'
3)双引号""
双引号类似于单引号,不会屏蔽` \ $ 这三个shell元字符的含义,如果需要屏蔽需要前面加一个\符号,其他字符的功能将被屏蔽(包括单引号)。两个双引号之间的单引号不必成对出现
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# echo "$HOME"
/root
[root@localhost ~]# echo "\$HOME"
$HOME
[root@localhost ~]# echo "this's a book"
this's a book
4)反引号``
shell中使用反引号进行命令替换,命令替换使shell可以将命令字符替换成命令执行结果的输出内容,也可用$()来实现
echo “today is `date +%D`”
echo "today is $(date +%D)"
2 正则表达式
正则表达式中有些匹配字符与shell中的通配符符号一样,但是含义不同
基本正则表达式:grep egrep vi sed awk
扩展正则表达式: egrep awk
基本正则表达式及其所对应的含义
c 匹配字母c
. 匹配任意单个字符
* 匹配前一个字符出现0次或者多次
.* 匹配任意多个任意字符
[] 匹配金河中的任意单个字符,括号中为一个集合
[x-y] 匹配连续的字串范围
^ 匹配字串的开头
$ 匹配字串的结尾
[^] 匹配否定,对括号的集合取反
\ 匹配转译后的字串
\{n,m\} 匹配前一个字符重复n到m次
\{n,\} 匹配前一个字符重复至少n次
\{n\} 匹配前一个字符重复n次
\(\) 将\(与\)之间的内容存储在“保留空间”,最大存储9个
\n 通过\1至\9调用保留空间中的内容,一般和上面的\(\)配合使用
基本正则表达式案例
grep o[os]t /etc/passwd 查找包含oot或者ost的行
grep [0-9] /etc/passwd 查找包含数字0-9的行
grep sbin/[^n] /etc/passwd 查找sbin/后面不跟n的行
grep ‘0\{1,2\}’ /etc/passwd 查找数字0出现1次到2次的行
grep "\(root\)\(:\).*\2\1" /etc/passwd 查找包含以root:开头并以:root结尾的字串行
扩展正则表达式
{n,m} 等同于基本正则表达式的\{n,m\}
+ 匹配前一个字符出现一次或多次
? 匹配前一个字符出现0次或一次
| 匹配逻辑或者,即匹配|前或后的字串
() 匹配正则集合
egrep '0{1,2}' /etc/passwd 查找数字0出现1次和2次的行
egrep '0+' /etc/passwd 查找包含至少一个0的行
egrep '(root|admin)' /etc/passwd 查找包含root或者admin的行
字符集
[:alpha:] 字母字符
[:alnum:] 字母和数字字符
[:cntrl:] 控制字符
[:digit:] 数字符号
[:xdigit:] 十六进制数字字符
[:punct:] 标点符号
[:graph:] 非空格字符
[:print:] 任何可以显示的字符
[:space:] 任何产生空白的字符
[:blank:] 空格和Tab键字符
[:lower:] 小写字母
[:upper:] 大写字母
grep [[:digit:]] /etc/passwd
自动化运维之shell引号和正则表达式(二)的更多相关文章
- 自动化运维工具——puppet详解(二)
一.class 类 1)什么是类? 类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用: 类可以被继承,也可以包含子类: 具体定义的语法如下: class NAM ...
- 自动化运维之shell通配符,转义符,和元字符(二)
1 shell通配符 通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆.把通配符理解为shell特殊代号字符就可. 二.shell元字符 shell除了有通配符之外,由shel ...
- 自动化运维工具——ansible详解(二)
Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本. 通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机 ...
- 自动化运维工具——ansible命令使用(二)
一.Ansible系列命令使用 ansible命令执行过程 1 . 加载自己的配置文件 默认/etc/ansible/ansible.cfg 2 . 加载自己对应的模块文件,如command 3 . ...
- 自动化运维:(1)认识 Shell
目录 (一)运维是什么? (二)什么是 Shell? (三)Shell的分类 (四)Shell脚本 (五)Shell的变量 (六)表达式 (七)Linux常见符号 (八)常见命令 (一)自动化运维是什 ...
- Linux Shell交互式自动化运维程序
Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装 ...
- 自动化运维—tomcat服务起停(mysql+shell+django+bootstrap+jquery)
项目简介: 项目介绍:自动化运维是未来的趋势,最近学了不少东西,正好通过这个小项目把这些学的东西串起来,练练手. 基础架构: 服务器端:web框架-Django 前端:html css jQuery ...
- 简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)
简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html
- 企业级自动化运维工具---puppet详解
本文收录在Linux运维企业架构实战系列 1.认识puppet 1.1 引入 puppet是什么,咱们先不用专业的名词解释它,咱们先描述一些工作场景,看明白这些工作场景,自然会知道puppet是什么. ...
随机推荐
- 5、两个栈实现队列------------>剑指offer系列
题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路 栈1: 用于入队列存储 栈2: 出队列时将栈1的数据依次出栈,并入栈到栈2中 栈2出栈即栈1的底部数据 ...
- android布局不带参数返回
package com.example.lesson3_4; import java.util.ArrayList; import java.util.List; import android.app ...
- jsp中<c:forEach varStatus="status">的属性值问题
c:forEach varStatus属性 current当前这次迭代的(集合中的)项 index当前这次迭代从 0 开始的迭代索引 count当前这次迭代从 1 开始的迭代计数 first用来表明当 ...
- openstack v3 rest 访问
1. openstack主要面向得是python为主得开发.目前java中嵌入openstack主要是通过rest接口访问 2. 下载一个postman的接口测试工具 3. openstack 中的服 ...
- Kruskal与Prim
一.最小生成树 在无向图中,连通且不含圈的图称为树(Tree).给定无向图G=(V,E),连接G中所有点,且边集是E的子集的树称为G的生成树(Spanning Tree),而权值最小的生成树称为最小生 ...
- 79 最长公共子串 (lintcode)
f[i][j]表示的是以第i个结尾和第j个结尾 class Solution { public: /* * @param A: A string * @param B: A string * @ret ...
- Gersgorin 圆盘
将学习到什么 好多. Gersgorin 圆盘定理 对任何 \(A \in M_n\),我们总可以记 \(A=D+B\),其中 \(D=\mathrm{diag}(a_{11},\cdots, ...
- WebStorm换主题(护眼)
一.下载喜欢颜色的主题 http://www.phpstorm-themes.com/ 我用的豆沙绿护眼 <scheme name="Solarized Light My" ...
- java在线聊天项目1.2版 ——开启多个客户端,分别实现数据库注册和登录功能后,成功登陆则登录框消失,好友列表窗出现
登录框消失语句 dispose(); 好友列表窗出现 使用new FriendsFrame(phone,s); 登陆对话框代码修改如下: package com.swift.frame; import ...
- ios 序列化
1到底这个序列化有啥作用? 面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教材的一 ...