一、正则表达式特殊符号:

二、grep的用法

grep    [-A|B|a|c|i|n|v]    [--color=auto]    '搜索字串'    filename

-A ===> after缩写,后面接数字,除了列出该列外,还列出后续的n列
-B ===> before缩写,后面接数字,除了列出该列外,还列出前面的n列
-a ===> 将二进制binary文件以text文件的方式查找数据
-c ===> 记录找到字符串的次数
-i ===> 忽略大小写
-n ===> 输出行号
-v ===> 反向选择
--color-auto ===> 将找到的关键字用特殊颜色标注

1.普通用法

eg:

2.grep配合正则表达式用法

(1)将nginx文件中所有包含大写字符的行列出来,并标明行号

3.常见符号的用法

[] ===> 集合字符

- ===> 大小写字母和数字范围

^ ===> 指定字符出现在行首 | 取反
=======================================注释======================================== 注意:这里的 ^ 可能代表行首也可能代表取反,[]代表集合符号 若为 ^[*] 则代表行首,即在括号 [] 之外代表行首。 若为 [^*] 则代表取反,即在括号 [] 之内代表取反。
================================================================================== $ ===> 指定字符出现在行尾 . ===> 任意字符 * ===> 重复字符 =======================================注释======================================== 注意:*?代表还有任意多个?字符的意思,即包含0个的可能,因此若至少要求含有两个a,则必须写成这样 : aaa*
=================================================================================== {} ===> 限定重复字符
=======================================注释========================================
?{x} 代表还有连续5个或5个以上?字符
?{x,y} 代表含有x到y个?字符
在shell里{和}是有特殊含义的,因此需要加转义字符 \
===================================================================================

(1)查找成绩单中是5的倍数的成绩

(2)将0-60的成绩输出(假设没有满分的)

(3)将成绩中不含3的成绩输出

(4)将mark文件中的空白行显示出来

grep -n '^$' mark.txt

注意 ^为行首 $为行尾,仅有行首和行尾的行即为空白行

(5)将profile文件除了注释行都显示出来

 grep '^[^#]' /etc/profile

注意:
第一个^是行首,第二个^是取反。
综合意思就是行首不是#的数据,即非注释数据

(6)查找含有 b..h 的行,.其中 . 代表任意字符,但是一个 . 仅占用一个字符)

(7)将成绩中含有1的成绩都输出来

(8)将mark文件中还有2-5个重复字符'5'的行输出来

grep '[^5]5\{2,5\}[^5]' mark.txt

注意:

最前和最后的[^5]代表要查找的含有2-5个'5'的字符串前后不再是'5'

三、sed用法

sed    [-nefr]    动作

-n ===> 安静模式,仅将经过sed特殊处理的那一行或者动作才列出来
-e ===> 直接在命令行进行sed的动作编辑
-f ===> 接文件,直接将sed的动作写在文件内
-r ===> sed的动作支持的是延伸型正则表达式(默认支持普通型正则表达式)
-i ===> 直接修改读取的文件内容,而不是由屏幕输出 动作: [n1] | [n1,n2]function a ===> 新增,后接的字符串会在当前行的下一行出现
c ===> 取代,后接的字符串会取代n1或n1-n2的内容
s ===> 取代,直接进行取代,通常搭配正则表达式
d ===> 删除
i ===> 插入,后接的字符串会在当前行的上一行出现
p ===> 打印输出,经常配合 -n

实战演练:

1.查看mark文件当前内容

2.在第10行后新增'lanyue'字符串并输出

'

3.删除第十一行的内容并输出

4.将mark第6行替换为666666输出,但是不改变源文件

5.将本机的IP地址输出(注意:这里是重点,代表着sed可以以行为单位进行处理)

(1)先来查看一下数据原始格式

(2)我们需要的仅仅是IP,所以首先要先将行过滤出来,然后再去头去尾

 ifconfig | grep 'broadcast' | sed 's/.*inet//g' | sed 's/netmask.*//g'

注意:
grep 'broadcast' 为过滤出包含IP地址的行来
sed 's/.*inet//g' 为去头
sed 's/netmask.*//g' 为去尾

四、扩展正则表达式

基础的正则表达式已经足够使用了,这里可以先稍作了解就行

五、awk

相比较于sed处理整行的用法,awk更倾向于处理某行字段。

awk    '条件类型1{动作1}    条件类型2{动作2}    ......    条件类型n{动作n}'    filename

注意:
awk会将一行的数据分成指定段,每段都是一个变量从$1开始到$n。整行数据的变量用$0表示

内置变量:

逻辑运算符:

注意:

所有的awk动作,即在{}里面内的动作,如果需要多条命令辅助时,可以通过 ; (封号)或者 Enter(回车)来隔开每个指令

实例:列出当前系统所有的账号名称,并且将UID和GID输出

 cat /etc/passwd | awk 'FS=":"{print $1 "\t" $3"\t" $4}'

注意:
passwd中,每个字段以:隔开,所以为了分出每个变量需要使用FS=":"条件表达式

Linux基础篇,正则表达式的更多相关文章

  1. Linux随笔-鸟哥Linux基础篇学习总结(全)

    Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...

  2. 第一天 Linux基础篇

    课程介绍 1.认识Linux的不同版本 2.以及应用领域 3.文件和目录 4.Linux命令概述 5.Linux命令-文件 6.Linux命令-系统管理-磁盘管理 认识Linux 什么是操作系统  生 ...

  3. (大数据工程师学习路径)第一步 Linux 基础入门----正则表达式基础

    介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把 ...

  4. java基础篇---正则表达式

    正则表达式在许多语言,例如Perl.PHP.Python.JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能. 正则表达式是一种可以 ...

  5. Linux基础篇–shell脚本编程基础

    本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础程序:指令+数据程序编程风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心 ...

  6. Linux基础之-正则表达式(grep,sed,awk)

    一. 正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式是对字符串操作的一种逻辑公 ...

  7. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  8. Linux基础篇

    Linux入门 2.1 Linux介绍 1)Linux是一款操作系统,特点:免费.开源.安全.高效.稳定.处理高并发非常强悍,半年至一年重启一次机即可,比Windows强悍,现在很多企业级项目都部署到 ...

  9. linux基础之正则表达式

    一.基本正则表达式 字符匹配 . : 匹配任意单个字符 [] : 匹配中括号中的任意单个字符 [^] : 匹配指定范围外的任意单个字符 空白字符:[:space:].数字:[:digit:].小写字母 ...

随机推荐

  1. 【JAVA进阶架构师指南】之一:如何进行架构设计

    前言   本博客是长篇系列博客,旨在帮助想提升自己,突破技术瓶颈,但又苦于不知道如何进行系统学习从而提升自己的童鞋.笔者假设读者具有3-5年开发经验,java基础扎实,想突破自己的技术瓶颈,成为一位优 ...

  2. 如何查看子线程中的GC Alloc

    1)如何查看子线程中的GC Alloc2)Build时,提示安卓NDK异常3)如何获得ParticleSystem产生的三角形数量4)关于图片通道的问题5)GPUSkinning导致模型动画不平滑 M ...

  3. Python-String字符串操作

    name='xioer-pipo' print(name.capitalize()) #第一个字符大写 print(name.expandtabs()) print(name.count('o')) ...

  4. PU Learning简介:对无标签数据进行半监督分类

    当只有几个正样本,你如何分类无标签数据 假设您有一个交易业务数据集.有些交易被标记为欺诈,其余交易被标记为真实交易,因此您需要设计一个模型来区分欺诈交易和真实交易. 假设您有足够的数据和良好的特征,这 ...

  5. [IROS 2018]Semantic Mapping with Simultaneous Object Detection and Localization

      论文地址:https://arxiv.org/abs/1810.11525   论文视频:https://www.youtube.com/watch?v=W-6ViSlrrZg​www.youtu ...

  6. 图-搜索-DFS-37. 解数独

    2020-03-24 22:23:32 问题描述: 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次.数字 1-9 在每一列只能出现一 ...

  7. 动态网站项目(Dynamic Web Project)登录功能的实现(mvc(五层架构)+jdbc+servlet+tomcat7.0+jdk1.8)(js验证+cookie)

    1.index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" p ...

  8. pd库dataframe基本操作

    一.查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不 ...

  9. C# 添加、修改、删除PPT中的超链接

    本文介绍通过C# 编程如何在PPT幻灯片中添加超链接的方法,添加链接时,可给文本或者图片添加超链接,链接对象可指向网页地址.邮件地址.指定幻灯片等,此外,也可以参考文中编辑.删除幻灯片中已有超链接的方 ...

  10. 怎么获取WebAPI项目中图片在服务端的路径

    1.这是我的项目结构. 2.路径格式为:[http://服务器域名/文件夹/文件.扩展名] 测试:假如我要获取到[logo_icon.jpg]这张图.在浏览器的地址栏中输入上面那个格式的路径. 3.可 ...