grep 和 sed:linux经常使用工具 amp; 基本正則表達式

grep 见链接:http://www.cyberciti.biz/faq/grep-regular-expressions/

sed參考文章:http://www.thegeekstuff.com


sed工作原理

This is called as one execution cycle. Cycle continues till end of file/input is reached:
1. Read a entire line from stdin/file.
2. Removes any trailing newline.
3. Places the line, in its pattern buffer.
4. Modify the pattern buffer according to the supplied commands.
5. Print the pattern buffer to stdout.


sed使用语法:

sed [-nefri] [命令]
描写叙述:
-n :使用安静(silent)模式。在一般 sed 的使用方法中,全部来自 STDIN 的数据一般都会被列出到终端上。

但假设加上 -n 參数后。则仅仅有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑。
-f :直接将 sed 的动作写在一个文件内。 -f filename 则能够运行 filename 内的 sed 动作。
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接改动读取的文件内容。而不是输出到终端。

匹配的的格式(行号,模式字符串):

ADDRESS(行号):

n : 匹配第几行
m,n : 从m到n行
m~n :从m行開始。每隔n行
'$' : 最后一行

PATTERN(字符串):

/sometext/ : 匹配有sometext字符串的行


sed -n 'ADDRESS'p filename  // print, e.g: sed -n '4'p text.txt。

'ADDRESSp',即将p放在单引號中也是能够的。或者将单引號换成双引號"ADDRESSp"也是一样,下同。

sed -n '/PATTERN/p' filename // e.g: sed -n '/aa/p' text.txt sed -n 'ADDRESS'd filename //delete,不会删除文件里的内容。仅仅是在标准输出中删除该行。

sed -n '/PATTERN/d' filename sed 'ADDRESS a\ some text' filename //append,在匹配行的下一行加入"some text",注意单引號 sed '/PATTERN/ a\ some text' filename sed 'ADDRESS i\ some text' filename // insert,在匹配行前插入一行 sed '/PATTERN/ i\ some text' filename sed 'ADDRESS c\ some text' filename // 替换匹配行 sed 'PATTERN c\ some text' filename sed -n 'ADDRESS'= filename //打印匹配的行号, 仅仅接受一个地址,假设打印多行使用{}括起来,例如以下 sed -n 'ADDRESS,/PATTERN/ { = p }' filename

运行多条sed命令

sed -e: use multiple -e options to build up a script out of many parts。


-e option is optional for sed with single command. sed will execute the each set of command while processing input from the pattern buffer

-e script, --expression=script

    add the script to the commands to be executed

样例:
sed -e 's/foo/bar/' -e '/FOO/d'
解释:先用bar替换foo,然后再删除有字符串FOO的行


sed 正則表達式查找和替换

's' 命令应该是sed中最重要的命令,语法例如以下:

sed 'ADDRESSs/REGEXP/REPLACEMENT/FLAGS' filename
sed 'PATTERNs/REGEXP/REPLACEMENT/FLAGS' filename

样例:

sed '1s/aa/bb/' text.txt        //用bb替换aa。仅仅在aa第一次出现的地方进行替换
sed '2s/aa/bb/' text.txt    //用bb替换aa,仅仅在aa第二次出现的地方进行替换
sed 's/aa/bb/g' text.txt    //用bb替换aa。g(global )是全局替换的意思。不加g默认也是全局替换。
sed -n 's/aa/bb/gpw result.txt' text.txt    //g全局替换,p打印,w将替换结果写到result.txt文件里sed 's/...$//' text.txt        //正則表達式匹配:将最后位置的前三个字符替换为空。即删除每行的最后三个字符。

基本正則表達式

. : 代表随意单个字符

演示样例: a.b : 表示acb/a*b/a b/a9b… 都能够但不能是accb/ab

[] : 指定范围内的单个字符

演示样例: a[c|d]b : 表示acb/adb 其它的都不能够

[^ ] : 取反。非指定范围内的单个字符

演示样例:a[^d]b : 表示除了adb 其它的acb/abb/a b…都能够

? : 反复前边的字符0次或1次

演示样例:a?b : 表示ab/aab 其它的都不能够

* : 反复前边的字符无限次

演示样例:a* : 表示a/aa/aaa/aaaa… 能够反复a无限次

.* : 随意长度的随意字符

演示样例:a.* : 表示a/ac/acc/a,b … 能够是a后边跟随意字符

\{m,n\} : 反复前边的字符至少m次,最多n次。必须加上反斜杠转义

演示样例:a{1,3} : 表示 a/aa/aaa 能够反复a最少1次最多3次

\{m,\} : 反复前边的字符至少m次,必须加上反斜杠转义

演示样例:a{2,} : 表示aa/aaa/aaaa… 能够反复a最少2次最多不限

\{0,n\} : 反复前边的字符最多n次,必须加上反斜杠转义

演示样例:a{0,3} : 表示 空/a/aa/aaa 能够反复a最多3次也能够不反复也就是空

\{m\} : 反复前边的字符精确匹配m次,必须加上反斜杠转义

演示样例:a{2} : 表示 aa 精确匹配反复a2次

^ : 行首匹配,必须出如今行首

演示样例:^a : 表示全部以a开头的行

$ : 行尾匹配。必须出如今行尾。注意词尾与行尾的差别

演示样例:a$ :表示全部以a结尾的行

^$ : 空白行

\< : 词首匹配。必须出如今词首

演示样例:\< a : 表示a/acv/abcc… 全部以a开头的单词

\> : 词尾匹配,必须出如今词尾,注意词尾与行尾的差别

演示样例:a> : 表示a/cda/cca/… 全部以a结尾的单词

\(\) : 分组字符,可用\1引用左数第一个(中包括的内容

演示样例: a\(abc\)\1 表示:aabcabc \1引用了()中的abc

[ :upper: ] : 单个随意大写字母,注意[]与:之间有个空格,下同

演示样例:a[:upper:] 表示:aA/aB/aC… a后边跟随意一个大些字母

[ :lower: ] : 单个随意小写字母

[ :space: ] : 单个空白字符

[^[ :space: ]] : 单个非空白字符

[ :digit: ] : 单个随意数字0-9

演示样例:a[:digit:]b 表示: a0b/a1b/a2b… a和b中间跟随意一个0-9的数字

[ :alpha: ] : 单个随意字母

[ :alnum: ] : 单个随意字母或数字

[:punct:] : 单个随意特殊符号

扩展正則表達式元字符:
扩展正則表達式简化了基本正则中的一个元字符。又添加了几个。
\{m,n\} → {m,n} : 使用方法与基本正则中的一样

演示样例:a{1,3} 表示: a/aa/aaa

\(\) → () : 使用方法与基本正则中的一样

演示样例:(abc)\1 表示:abcabc

+ : 匹配前边的字符一次或多次

演示样例:a+ 表示: a/aa/aaa/aaaa…

| 表示或

演示样例:(a|b)c 表示: ac/bc

转载于:https://www.cnblogs.com/mfrbuaa/p/5223027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程主机http协议版本信息泄漏_Web基础之http协议

Http协议介绍&#xfffc;HTTP 全称&#xff1a;Hyper Text Transfer Protocol 中文名&#xff1a;超文本传输协议什么是超文本包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接&#xff0c;形成网状(Web)&#xff0c;因此又被称为网页(Web Page…

c语言opengles程序,OpenGL ES _ 着色器_程序

演示图你不知道这个东西&#xff0c;请不要看了,请看我的其他文章先了解一下O!学习目标掌握着色器程序的执行过程简单的例子uniform float t; // 时间uniform mat4 gl_ModelViewMatrix; // 模型视图矩阵attribute vec4 vel;const vec4 g vec4(0.0,-9.8,0.0) // 重力加速度void…

spring IOC加载流程

看了网上、书上很多对于spring IOC容器加载过程的分析。大多都只是粗略的讲一下加载流程。其实这样也不错&#xff0c;简单粗暴。清晰记得之前和一个前辈交流时他说的一句话&#xff1a;什么设计模式、设计框架都是扯淡&#xff0c;能实现这个功能就是最好的。其实这样的说法是…

pytorch 模型可视化_【深度学习】高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力...

作者&#xff1a;Eugene Khvedchenya 编译&#xff1a;ronghuaiyang导读只报告模型的Top-1准确率往往是不够的。将train.py脚本转换为具有一些附加特性的强大pipeline每一个深度学习项目的最终目标都是为产品带来价值。当然&#xff0c;我们想要最好的模型。什么是“最好的”…

c语言 %-20s,一次 Rust 和C语言的混搭

存在内存泄露extern crate libc;use libc::size_t;use libc::{FILE,c_char};use std::string;#[repr(C)]pub struct mntent {mnt_fsname :*mut c_char, /* 挂载的文件系统的名字 */mnt_dir :*mut c_char, /* 挂载点 */mnt_type :*mut c_char, /* 文件系统类型&#xff1a;ufs、…

KMP算法———模板

做出KMP字符串匹配算法心情也是好好哒&#xff0c;萌萌哒。 感谢黄学长&#xff0c;感谢栋栋&#xff01; #include<cstdio>#include<string>#include<iostream>using namespace std;int p[101];int main(){ string a,b; cin>>a>>b; int na.leng…

tstringlist怎么查看是否存在该数据_注意!研究生招生信息只公开1个月!应该怎么用?...

请注意&#xff01;全国硕士研究生招生信息公开平台&#xff08;以下简称“研招信息公开平台”&#xff09;已于2019年7月1日开放-2019年7月30日结束。招生信息怎么看&#xff1f;老师在线教你看懂研究生招生信息&#xff01;本篇目录&#xff1a;1.全国硕士研究生招生信息公开…

山东外贸职业学院王彩霞老师网上考试系统及c语言考试题库》,2015年山东外贸职业学院单招考试内容...

测试方式及内容1、夏季高考考生&#xff1a;文化考试、基本技能测试、面试(总分400分)(1)文化考试&#xff1a;考试形式为笔试&#xff0c;考试科目&#xff1a;语文、数学。两科一套卷子&#xff0c;分值为&#xff1a;语文100分、数学100分&#xff0c;总分200分&#xff0c;…

5.UiScrollable API 详细介绍

Tip&#xff1a; 1.扫动过程中如果界面停留在滚动条的中间部分会先回到起点再进行滚动 2.扫动过程中设置的步长长短决定划过内容的多少&#xff0c;步长越长滑过的内容就越少&#xff1b;步长越短划过的内容就越长 一、UiScrollable 类介绍 1.UiScrollable类说明 1&#xff09;…

delphi读取xml中的内容property name传递参数_Python 进阶知识全篇-XML 解析

什么是 XML&#xff1f;XML 指可扩展标记语言&#xff08;eXtensible Markup Language&#xff09;&#xff0c;标准通用标记语言的子集&#xff0c;是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 XML 教程XML 被设计用来传输和存储数据。XML 是一套定…

c语言getline读取一行命令行,如何从文件的特定行中获取getline()? C ++

这个问题非常不清楚。您如何确定具体线&#xff1f;如果是第n行&#xff0c;最简单的解决方案就是调用getlinen次&#xff0c;扔掉除最后一个结果以外的所有结果&#xff1b;呼唤ignoren-1次可能会快一点&#xff0c;但我怀疑如果您总是读入相同的字符串(而不是构造一个每次都更…

12.UiAutomator 获取系统信息

一、Build构建信息 1.build类&#xff1a; Build类提供了硬件厂商、编号、序列号、SDK版本等重要信息。 类名&#xff1a;android.os.Build 常量名 说明 BOARD底层板名称BOOTLOADERBootloader版本号BRAND品牌CPU_ABICPU指令集CPU_ABI2CPU第二指令集DEVICE工业设计名称DISPLAY显…

c语言编写网页图形界面代码,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发&#xff0c;不能用于图形界面。大家也都有回答&#xff0c;需要其他的库。MFC&#xff0c;GTK&#xff0c;QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

python 读取word_教你怎么使用 Python 对 word文档 进行操作

使用Python对word文档进行操作一、安装Python-docxPython-docx是专门针对于word文档的一个模块&#xff0c;只能读取docx 不能读取doc文件。说白了&#xff0c;python就相当于windows操作系统&#xff0c;QQ就是跑在windows操作系统上的软件&#xff0c;QQ最大的作用是可以去聊…

[国嵌攻略][084][信号同步编程]

进程同步 一组并发进程进行相互合作、相互等待&#xff0c;使得各进程按一定的顺序执行的过程称为进程间的同步。 进程同步与进程互斥 进程同步问题的关键在于生产者不需要获取信号量&#xff0c;消费者不需要释放信号量&#xff0c;所以信号量的初值设置为0。但是进程互斥问题…

android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题

开发中很常见的一个问题&#xff0c;项目中的lListview不仅仅是简单的文字&#xff0c;常常需要自己定义listview&#xff0c;自己的Adapter去继承BaseAdapter&#xff0c;在adapter中按照需求进行编写&#xff0c;问题就出现了&#xff0c;可能会发生点击每一个item的时候没有…

stm32cubemx adc_STM32CubeMX__Exp5_ADC1_2CH_DMA_TIM3_Trig__简明指导文件__jyb

用定时器TIM3触发DMA方式的双通道ADC定时采样&#xff1a;拷贝STM32CubeMX工程文件LED_Flash_PC12.ioc&#xff0c;修改为&#xff1a;Exp5_ADC1_2CH_DMA_TIM3_Trig.ioc(1)配置ADC1的通道和参数配置ADC通道参数(2)配置ADC1的DMA①通过点"Add"按钮&#xff0c;添加ADC…

JS 实现 jQuery的$(function(){});

1、浏览器渲染引擎的HTML解析流程 何谓“渲染”&#xff0c;其实就是浏览器把请求到的HTML内容显示出来的过程。渲染引擎首先通过网络获得所请求文档的内容&#xff0c;通常以8K分块的方式完成。下面是渲染引擎在取得内容之后的基本流程&#xff1a; 1&#xff0c;解析html以构…

linux ora-00031,kill session遇到ORA-00031錯誤

今天在處理一個表被鎖死的問題時&#xff0c;遇到ORA-00031: 這個階段作業將被標示為要終結的階段作業具體操作步驟如下&#xff1a;1. 先確認鎖定資源的session信息select OS_USER_NAME,s.MACHINE ,object_name as對象名稱,s.sid,s.serial#,p.spid as系統進程號from v$locked_…

html 分页_MySQL——优化嵌套查询和分页查询

Java识堂&#xff0c;一个高原创&#xff0c;高收藏&#xff0c;有干货的微信公众号&#xff0c;欢迎关注优化嵌套查询嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果&#xff0c;然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单&#xff0c;也…