1. 基础正规表示法

1.1 以grep获取字符串:

在万用字符*是0-无限个字符,?是一个字符;在正则表达式中是0-无限个字符前一个相同字符。.一个前一个相同字符

grep '^[a-z]' greptest #搜索以a-z开始的行
grep '!$' greptest #搜索以!结尾的行
grep '\.$' greptest #搜索以.结尾的行,需要加入转义
grep 'g..d' greptest #.只代表一个字符
grep 'goo*g' greptest #*代表重复前面0个或者多个字符
grep '[.!]$' greptest #以.!结尾的行
grep '[^.!]$' greptest #不以.!结尾的行'
grep 'go\{2\}g' greptest #以g开头,2个o和g结尾的行
grep ‘go\{2,5\}’ greptest #以g开头2到5个o的行
grep 'go\{2,\}g' greptest #以g开头,2个以上的o,以g结尾的行

1.2 万用字符表示规则:

ls -l ip?
ls -l ip*

1.3 ?和$符号的其他含义:

?:上一个执行命令所返回值,如果执行正确返回值为0,错误返回值非0

$:表示当前shell的进程号(pid)

echo $?
echo $$

2. printf

3. sed工具简介

sed是一个非交互文本编辑器,必须通过行号或正则表达式制定需要改变的行

sed如何读取数据:sed从文件的一个文本行或者从标准输入读取数据,将读取的数据拷贝到一个编辑缓冲区,然后读命令行或者脚本的第一条命令,并使用这些查找模式或者定位行号来编辑它。重复此过程直到命令结束。

cat -n greptest | sed '2a this line is added'
cat -n greptest | sed '2i this line is inset'
cat -n greptest | sed '2,3c this line is 2,3 replace'
cat -n greptest | sed '2,8d'
cat -n greptest | sed '2a this line is book'
cat -n greptest | sed '2a this line is book' > greptestd #用数据流重导向可以改变源文件
cat -n greptest | sed '1,8p'
cat -n greptest | sed '$p' #显示最后一行
cat -n greptest | sed 's /is//IS/'#把is替换为IS
cat -n greptest | sed 's /is//IS/g'#把is替换为IS,全局替换

可以对照1.1来比对。

sed -n '^/a-z/'p greptest
sed -n '^/!$/'p greptest
sed -n '/g..d/'p greptest
sed -n '/too*/'p greptest
sed -n '/\.$/'p greptest
sed -n '/go\{2\}g/'p greptest
sed -n '/go\{2,\}g/'p greptest
sed -n '2,/is/'p greptest
sed -n '1,/is/'p greptest #第一行不会匹配
sed -n '/good/=' greptest cat -n greptest | sed '/good/ a add a line in the next line' cat -n greptest | sed '/good/ i add a line in the before line'
cat -n greptest | sed '/good/ a add a line in the next line'

sed -n '/glad/=' -e '/glad/p' greptest
sed -n '/glad/=';'/glad/p' greptest
sed -n '
>/glad/=
>/glad/p’ greptest sed -e 's/is/IS/' -e 's/am/WAS/' greptest
sed -e 's/is/IS/g';'s/am/WAS/' greptest
sed '
>s/is/IS/g
>s/am/WAS/' greptest

#!/bin/sed -f
/good/ a\
this line is append by good chmod u+x tst.sed
./tst.sed

sed 's/is/IS/gw greptest' greptest

sed '1G' greptest
sed '/good/G' greptest
sed -n 's/great/man &/' greptest

4. awk工具简介

如果设置了-F选项,则awk每次读一条记录或一行,并使用制定的分隔符分隔指定域,如果没有设置,awk则嘉定空格为域分隔符。

awk 'BEGIN{print "this is the start----"} {print $1,$2,$3} END{print "this is the end"}' filename

awk '$0~/good/' greptest
awk 'if($0~/good/) print $0' greptest
awk 'if($0~/^[^a-zA-Z]/) print $0' greptest
awk 'if($0~/!$/) print $0' greptest
awk 'if($0~/g..d/) print $0' greptest
awk 'if($0~/goo*/) print $0' greptest
awk 'if($0~/good|glad/) print $0' greptest #|是或的意思
awk 'if($0~/g00+/) print $0' greptest
awk 'if($0~/g00?/) print $0' greptest

awk '{print NF,NR,$NF,$NR,$0}' greptest
awk '{print NF,NR,$NF,$NR,$0}END{print "=====";print"FLIENAME"}' greptest
awk 'BEGIN{FS=":"}{print NF,NR,$NF,$NR,$0}END{print "=====";print"FLIENAME"}' greptest

awk 'gsub("good","GOOD"){print $0}' greptest

5. 文件数据对比与打印的相关功能

5.1 diff:

5.2 cmp:

linux 基础7-正则表达式的更多相关文章

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

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

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

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

  3. linux基础之正则表达式

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

  4. Linux基础-sed+正则表达式

    1,删除文件每行的第一个字符:sed -r 's/^.//g' passwd 2,删除文件每行的第二个字符:sed -r 's/^(.)(.)/\2/g' passwd 3,删除文件每行的最后一个字符 ...

  5. Linux基础篇,正则表达式

    一.正则表达式特殊符号: 二.grep的用法 grep [-A|B|a|c|i|n|v] [--color=auto] '搜索字串' filename -A ===> after缩写,后面接数字 ...

  6. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  7. Linux基础入门

    第一节,linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 (一).Linux 为何物 ...

  8. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  9. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  10. Linux 基础入门----推荐课程

    Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https: ...

随机推荐

  1. Mac下载工具软件提示损坏

    今天装Navicat的时候一直报错文件损坏,最后请教别人才知道,这里记录下: 原因: Mac默认不允许任何来源的软件安装,安全问题,需要我们设置下即可: 解决方法: 方法一: 方法二: 终端输入命令: ...

  2. 【动手学深度学习】Jupyter notebook中 import mxnet出错

    问题描述 打开d2l-zh目录,使用jupyter notebook打开文件运行,import mxnet 出现无法导入mxnet模块的问题, 但是命令行运行是可以导入mxnet模块的. 原因: 激活 ...

  3. Windows 10在2018四月更新中默认安装了OpenSSH客户端

    客户端安装路径 C:\Windows\System32\OpenSSH 版本:

  4. Scratch3架构结构说明

    Scratch3.0整体项目结构比较庞大,对于不同二次开发开始的时候会出现一头雾水,需要先了解下整体框架,可以按需要在指定的源码下进行修改,大致结构如下: 1. scratch-gui: 是基于Rea ...

  5. 【c# 学习笔记】子类的初始化顺序

    使用了继承之后,当我们初始化一个子类时,除了会调用子类的构造函数外,同时也会调用基类的构造函数.子类的初始化顺序如下: ① 初始化类的实例字段: ② 调用基类的构造函数,如果没有指明基类,则调用Sys ...

  6. eNSP——ACL基础设置

    原理: 实验案例: 拓补图: 实验编址: 1.基础设置 根据实验编址进行基础设置,并检测直连链路的连通性. 2.搭建OSPF网络 在所有路由器运行OSPF协议,通告相应网段到区域0. 在上一个随笔有详 ...

  7. 记一次Spring Cloud压力测试

    前言 公司打算举办一场活动,现场参与活动人数比较多.针对于可能访问比较密集的接口进行压力测试.使用jmeter进行测试,请求并发稍微多些,系统就会挂起. 针对压力测试出现的问题,因为并发超过1秒钟10 ...

  8. LC 173. Binary Search Tree Iterator

    题目描述 Implement an iterator over a binary search tree (BST). Your iterator will be initialized with t ...

  9. 十大经典算法 Python实现

    十大经典排序算法(python实现)(原创) 使用场景: 1,空间复杂度 越低越好.n值较大: 堆排序 O(nlog2n) O(1) 2,无空间复杂度要求.n值较大: 桶排序 O(n+k) O(n+k ...

  10. 20191011-构建我们公司自己的自动化接口测试框架-Util的ClearData模块

    cleardata模块主要是用于在每次测试之前清除历史执行痕迹,主要代码如下: from Util.ParseExcel import * from ProVar.ProjConfigVar impo ...