shell ——Day 4
时间:2019-09-19
本文章向大家介绍shell ——Day 4,主要包括shell ——Day 4使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、grep程序与正则表达式
Linux下有文本处理三剑客---grep sed awk
grep --行过滤器
sed ---行编辑器(流编辑器)
awk ---报告生成器
grep作用:只做文本过滤,挑选出满足条件的内容:在cpu中运行
用法:group [OPTIONS] PATTERN [E...]
扩展:命令格式
command[选项][参数]
xl create xl 挂起 xl start xl console
command sub camm[选项][参数]
grep 常用选项:
-v 取反
-E指定使用扩展正则表达式(默认匹配时使用标准正则表达式)
-i 忽略大小写
-c统计匹配行数
-o 只显示匹配内容
-n 显示行号
-w固定单词(词首,词尾锚定)
PATTERN
模式匹配 grep默认支持正则表达式;
globbing 文件通配符:* ? [] [^] 字符集
经常用来匹配文件名
globbing 文件通配符:* ? [] [^] 字符集
经常用来匹配文件名
正则表达式 -- 一般用来匹配文件内容;
每一种语言所支持的正则表达式引擎是不同的,其中Perl语言的正则表达式引擎的查找效率是最高的;
1、字符匹配
. 代表任意单个字符 a.b abb a%b a*b aab acb
[] 表示中括号里面的任意一个字符 a[cd]b acb/adb
[^] 表示对中括号的内容进行取反 a[^0-9]b a9b aab
2、次数匹配
. 代表任意单个字符 a.b abb a%b a*b aab acb
[] 表示中括号里面的任意一个字符 a[cd]b acb/adb
[^] 表示对中括号的内容进行取反 a[^0-9]b a9b aab
2、次数匹配
* 代表前面一个字符出现任意次数(包括0次) a*b aaaab ab b
\? 代表匹配前面的一个字符 0次 或 1次
\+ 表示匹配前面的一个字符 1次 到 n次
\{n\} 匹配前面一个字符 n次
\{n,m\} 匹配前面的一个字符 n次 到 m次(m>n)
\{0,m\} 匹配前面的一个字符 0次 到 m次
\{m,\} 匹配前面一个字符 m次以上
\? 代表匹配前面的一个字符 0次 或 1次
\+ 表示匹配前面的一个字符 1次 到 n次
\{n\} 匹配前面一个字符 n次
\{n,m\} 匹配前面的一个字符 n次 到 m次(m>n)
\{0,m\} 匹配前面的一个字符 0次 到 m次
\{m,\} 匹配前面一个字符 m次以上
例:grep --color= auto "a*b" 1.txt
vi 1.txt a aaab acb aab ab b
3、位置锚定
^ 锚定行首
$ 锚定行尾
空行表示:^$ ^[[:space:]]*$
$ 锚定行尾
空行表示:^$ ^[[:space:]]*$
例:取掉nginx.conf中的空行
[root@lsl ~]#vi 3.txt //在这里写一些东西
[root@lsl ~]# grep -v "^[[:space:]]*#" 3.txt | grep -v "^$"
\b 放在词首就是锚定词首,放在词尾就是锚定词尾( \bword\b wordcount countword )
\< 锚定词首
\> 锚定词尾
-w 指定一个固定单词;
\< 锚定词首
\> 锚定词尾
-w 指定一个固定单词;
例:锚定词尾
[root@lsl ~]#grep "h\>" 3.txt
4、分组
word* wordddddd wordwordwordword
\(\) \(word\)* 将前面的字符串视为一个整体,去进行0次或多次匹配
\(\) \(word\)* 将前面的字符串视为一个整体,去进行0次或多次匹配
后向引用
\(手势\)识别的原理并不复杂,它通过硬件\(捕获\)自然信号,就像相机\2图片\(信息\)那样,然后通过软件算法计算得到手的位置、姿态、
\(手势\)识别的原理并不复杂,它通过硬件\(捕获\)自然信号,就像相机\2图片\(信息\)那样,然后通过软件算法计算得到手的位置、姿态、
\1等,处理成计算机可以理解\3。
示例:\(ab+\(xy\)*\) * 其中 \1 = ab+\(xy\)* , \2 = xy
abxyabxyabxy abxyxyabxyxy ab
abxyabxyabxy abxyxyabxyxy ab
练习:
1、显示/proc/meminfo文件中大小s开头的行
2、显示/etc/passwd文件中不以/bin/bash结尾的行
3、显示/etc/passwd文件中UID号最大的用户的用户名
4、如果用户root存在,显示其默认的shell程序
5、找出/etc/passwd中的两位或三位数
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
[root@lsl ~]# grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):
而后找出/etc/passwd文件中用户名同shell名的行
useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
9、MAC地址如何匹配
原文地址:https://www.cnblogs.com/Blockblogs/p/11552571.html
- 给出一组非负整数,重新排序组成最大的数
- [机智的机器在学习] TensorFlow实现Kmeans聚类
- [机智的机器在学习] 利用TensorFlow实现多元线性回归分类器
- [数据结构和算法]《算法导论》动态规划笔记(1)
- [数据结构和算法]《算法导论》动态规划笔记(2)
- [算法与数据结构] 《算法导论》堆排序笔记
- [数据结构与算法] 链表的其他类型
- [数据结构与算法] 链接表总结
- [数据结构与算法] 线性表总结
- [数据结构与算法] Python实现二分查找
- [机智的机器在学习] 机器学习中的归一化和正则化问题
- [情人节] jieba分词介绍
- 左手用R右手Python系列——异常捕获与容错处理
- 【观点】漫谈推荐系统及数据库技术(二)——分布式数据库技术
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一个小白的角度看JavaScript Promise 完整指南
- 教会舍友玩 Git (再也不用担心他的学习)
- Python极简入门:数据类型、条件语句、循环语句、异常处理
- 手把手带你入门Python爬虫Scrapy
- 工作中巧用了这几个设计模式重构代码,女同事直呼666
- SourceMap知多少:介绍与实践
- (实战)Node.js 实现抢票小工具&短信通知提醒
- 目标检测 | Anchor free之CenterNet深度解析
- C++第二章 变量与基本类型
- springboot2结合mybatis拦截器实现主键自动生成
- 学习一下Python3的协程
- Android网络收集和ping封装库
- Kubernetes之helm部署使用
- 想掌握 Binder 机制?驱动核心源码详解和Binder超系统学习资源,想学不会都难!
- leetcode链表之回文链表