sed 及 正则表达式

一、sed基本概念

sed,流式编辑器 ,即把前一个程序输出引入到sed的输入,经过一系列编辑命令转换为另一种格式输出。默认使用Basic正则表达式规范,如若加 -r 选项则用Extended规范。

在Basic规范中,+、?、{ }、() 、| 均表示普通含义,如果要使用其特殊含义,需使用 \ 转义,在Extended规范中则相反。

sed在处理一行内容时,把当前处理的航存在临时缓冲区中(内存),称为模式空间,接着用sed命令处理模式空间的内容,处理完成后,把内容送往屏幕(但在某些时候,可以使用保持空间来暂存数据),接着不断重复处理下一行,直到文件结束。

二、sed基本使用

(1)/pattern/p:打印匹配的行

(2)/pattern/d:删除匹配到的行

注:sed命令不会修改原文件,只是表示某些行不打印输出,如果加 -i 选项就会修改原文件

(3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行的第一个匹配pattern1的字符串替换为pattern2

(4)/pattern/s/pattern1/pattern2/g:查找符合pattern的行,将每行匹配pattern1的字符串替换为pattern2

(5)定址

三、正则表达式

(1)^:行首定位符

(2)$:行尾定位符

(3).:匹配除换行符以外的单个字符

(4)*:匹配零个或多个前导单元

(5)[ ]:匹配指定字符组内任一字符

(6)[^]:匹配不在指定字符组内的任一字符

(7)():保存已匹配的字符,保存为标签1,可以使用 \1 来引用

(8)&:保存查找的串,以便在替换串中引用

(9)\<:词首定位符

(10)\>:词尾定位符

(11)v\{m\}:连续m个v

v\{m,\}:至少m个v

四、sed命令

g:将保持空间的内容拷贝到模式空间中

G:将保持空间的内容追加到模式空间中

h:将模式空间的内容拷贝到保持空间中

H:将模式空间的内容追加到保持空间中

d:删除模式空间中的第一行,并读入下一行

D:删除模式空间中的第一行,不读入下一行

x:交换模式空间和保持空间的内容

五、sed练习题

(1)给每一行结尾添加一行空行

(2)用sed模拟tac(倒序输出)

(3)追加匹配行到文件结尾

(4)行列转换

(5)1+...+100

(6)输出奇数偶数行

(7)1+...+100(标签方法)

注::a表示标签a,ba表示跳转到标签a,$!ba表示最后一行不用跳转到标签a。

时间: 2024-10-13 23:15:46

sed 及 正则表达式的相关文章

awk &nbsp; sed &nbsp; grep &nbsp; &nbsp; 正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数

sed配合正则表达式应用

题目:要求用sed将/et/passwd的每一行的第一个数和最后一个单词交换位置 [[email protected] etc]# sed -n '1p' passwd root:x:0:0:root:/root:/bin/bash 一.分析:sed替换配合正则表达式将会发挥最佳效果.下面来分析匹配特点: 因为passwd文件每一行的特点都是一样的,所以先提取第一列观察,题目要求将第一个数字和最后一个单词替换,所以整行至少会被分隔成4段,用sed替换()后向引用\1与\4交换位置即可. 特点分析

Linux shell脚本之 Sed 简介 正则表达式

Sed简介 sed是一款轻量级流编辑器,是stream editor的简写.由于sed是以行为单位进行编辑文件 , 因此也称为行编辑器.它无需直接编辑资料,能够将编辑工作自动化. sed工作方式: 由标准输入读取编辑文件,读入一行或指定行放到模式空间,然后将所有编辑指令逐一对模式空间的内容进行编辑,之后将结果输出到标准输出,同时清除模式空间.接下来再将下一行资料读入模式空间,如此重复之前的操作,直到最后一行,流编辑器停止.源文件不变 Ps: 1.模式空间为读入行所在的缓存,sed对文本行进行的处

Linuxshell脚本之蛋疼Sed简介正则表达式

Sed简介sed是一款轻量级流编辑器,是stream editor的简写.由于sed是以行为单位进行编辑文件 , 因此也称为行编辑器.它无需直接编辑资料,能够将编辑工作自动化.sed工作方式:由标准输入读取编辑文件,读入一行或指定行放到模式空间,然后将所有编辑指令逐一对模式空间的内容进行编辑,之后将结果输出到标准输出,同时清除模式空间.接下来再将下一行资料读入模式空间,如此重复之前的操作,直到最后一行,流编辑器停止.源文件不变Ps:1.模式空间为读入行所在的缓存,sed对文本行进行的处理都是在这

sed 命令+正则表达式

sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文件.sed可以随意编辑小或大的文件,有许多 sed命令用来编辑.删除,并允许做这项工作时不在现场.sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间.sed必须通过行号和正则表达式指定要改变的文本行 sed怎样读取数据: sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,

sed结合正则表达式强化练习

1.删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符 [[email protected] ~]# sed -r 's#^[[:space:]]+##g' /etc/grub2.cfg # # DO NOT EDIT THIS FILE # # It is automatically generated by grub2-mkconfig using templates # from /etc/grub.d and settings from /etc/default/g

sed命令和正则表达式

sed命令和正则表达式 sed是一种在线的,非交互式的编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,成为模式空间,接着用sed命令处理缓冲区的内容.处理完,把缓冲区的内容送往屏幕.sed支持正则表达式与grep一样,sed在文件中查找模式时也可以使用正则表达式(RE)和各种元字符.正则表达式是括在斜杠间的模式,>用于查找和替换,以下是sed支持的元字符使用基本元字符集 ^ $ [] [^] \<\> () {} 使用扩展元字符 ?+ {} | () sed命令:

正则表达式及编程三剑客(grep、sed、awk)命令详解

博文大纲:一.正则表达式(1)正则表达式的定义(2)正则表达式用途1.基础正则表达式(1)grep命令工具2.扩展正则表达式二.文本编辑处理器1.grep命令工具2.sed命令工具3.awk命令工具 一.正则表达式 (1)正则表达式的定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为regex.regexp或RE.正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.简单的说,正则表达式是一种匹配字符串的方法,通过一些特殊符号,实现快速查找.删除.替换某个特定字符串.

shell脚本编程之正则表达式(二)(扩展正则表达式、sed)

shell脚本编程之正则表达式(二) 一.前言 ? 本文主要是对扩展正则表达式的介绍,同时,继续按照上篇文章的风格介绍sed文本处理工具,sed作为shell编程中"三剑客"之一,在对文本处理上有巨大作用.关于正则概念以及grep命令结合正则使用的案例请参照:https://blog.51cto.com/14557673/2455588 二.扩展正则表达式 ? 扩展正则表达式主要是为了简化指令而产出的.例如,使用基础正则表达式查询文件中空白行与行首为#号之外的行(一般用于查看生效的配置