shell编程(七)--- sed的用法

sed:称为流编辑器,也称为行编辑器。

sed处理过程:sed读取源文件中的一行,并将其放在临时缓冲区中,这个缓冲区称为模式空间,使用相应的模式对模式空间进行处理,并将处理的结果显示到屏幕上,并不会影响源文件,处理结束后,将模式空间中的内容显示至屏幕。

sed格式:

sed [options] ‘AddressCommand‘ file ...

options:
-n:静默模式,不显示模式空间中的内容,默认显示默认空间中的内容。常和p命令一起使用。
-i:直接修改源文件的内容。
-e ‘AddressCommand‘ -e ‘AddressCommand‘:同时执行多个脚本。
-f:指定sed脚本文件的路径。
-r:默认情况下,sed只支持基本的正则表达式,如果要使用扩展表达式,需要用-r选项。

Address格式

1.StartLine,EndLine
如:
1,100:表示的是从第一行到第100行。
$:表示的是最后一行。
2./RegEXP/
正则表达式。
如:/^root/以root开头的行。
3./pattern1/,/pattern2/
表示的是从第一次被pattern1模式匹配的行开始,到第一次配patter2匹配的行结束,中间的所有行。
4.LineNumber
表示的一个指定的行号。
5.StartLine,+N
表示的是从startline行开始,向后的N行,总共N+1行,包括当前行和后面的N行。

Command格式

d:删除符合条件的行。
p:显示符合条件的行。
a \"string":在指定的行后面追加新行,内容为string。如果想追加多行的话,需要使用\n。

示例:

[[email protected] tmp]# cat bond0 | sed ‘/USERCTL/a \Hello1\nHello2‘
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=172.17.100.252
NETMASK=255.255.255.0
GATEWAY=172.17.100.2
USERCTL=no
Hello1
Hello2
IPV6INIT=yes
[[email protected] tmp]#
i \string:在指定行的前面添加新行,内容为string。添加多行,使用\n。
r file:在指定行的后面读取file文件的内容并添加到行后。
w file:将指定范围内的内容另存至file文件中。
s/pattern/string/ :将pattern匹配到的内容替换为string。只对每行中第一个被模式匹配到的字符串进行替换。
s/pattern/string/g :将pattern匹配到的内容替换为string。对每行中的所有被匹配的模式进行替换。
s/pattern/string/i :将pattern匹配到的内容替换为string,在查找时,忽略大小写。
注意:s后面的/可以是分隔符,其他的很多字符也都可以作为分隔符,如s#root#frame#g这种格式。

pattern中的元字符

^:行首定位符。如/^my/表示匹配所有以my开始的行。
$:行尾定位符。如/my$/表示匹配所有以my结尾的行。
.:匹配除换行符以外的任意单个字符。如/m..y/  匹配包含字母m,后跟两个任意字符,再跟字母y的行。
*:表示匹配前一个字符出现0次或多次。如/my*/  匹配包含字母m,后跟零个或多个y字母的行。
[]:表示匹配范围内的任意一个字符。如/[Mm]y/  匹配包含My或my的行。
[^]:表示匹配不再指定范围外的任意一个字符。如/[^Mm]y/  匹配包含y,但y之前的那个字符不是M或m的行。
\(..\):保存已匹配的字符。如1,20s/\(you\)self/\1r/  标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。
&:保存查找串以便在替换串中引用。如s/my/**&**/  符号&代表查找串。my将被替换为**my**
\<:词首定位符。如/\<my/  匹配包含以my开头的单词的行。
\>:词尾定位符。如/my\>/  匹配包含以my结尾的单词的行。
x\{m\}:连续m个x。如/9\{5\}/ 匹配包含连续5个9的行。
x\{m,\}:至少m个x。如/9\{5,\}/  匹配包含至少连续5个9的行
x\{m,n\}。至少m个,但不超过n个x。如/9\{5,7\}/  匹配包含连续5到7个9的行
如下这些同样可用:
[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
[:digit:]  [:graph:]  [:lower:]  [:print:]
[:punct:]  [:space:]  [:upper:]  [:xdigit:]

shell编程(七)--- sed的用法,布布扣,bubuko.com

时间: 2024-12-11 21:27:38

shell编程(七)--- sed的用法的相关文章

Shell编程中Shift的用法

Shell编程中Shift的用法 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[index] = value 下面以一个简单的脚本来说明,脚本内容如下: #!/bin/sh until [ $# -eq 0 ] do echo "第一个参数为: $1 参数个数为: $#" shift done 执行以上程序x_shift.sh: [[email protected] test]# ./test

shell编程基础-sed命令

linux之sed用法sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来.  

Shell编程之---sed命令详解

sed 是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑 sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件 sed命令调用的三种方式 1.在shell命令行输出命令调用sed sed  [option]  'sed cmd'  file 2.将sed命令插入脚本 sed  [option] -f  'sed.sh'  file #vi sed.sh    sed要调用的脚本为sed.sh #/file:/a\This is a test line!!! 调用脚本 #sed

linux之shell编程select和case用法

shell里的select用法: 语法: #i/bin/bash select 变量 in 列表 do     要执行的语句      done 举例: #!/bin/bash echo "What is your favourite OS?" select var in "windows" "Linux" "Gnu Hurd" "Free BSD" "Other"; do    ech

2.shell编程-函数的高级用法

2.1.函数的定义和使用 函数基本使用 [[email protected]_0_9_centos ~]# test() > {} -bash: syntax error near unexpected token `{}' [root@VM_0_9_centos ~]# test() {} -bash: syntax error near unexpected token `{}' [root@VM_0_9_centos ~]# test() > { > echo "test

Shell编程之--“grep-awk-sed” 基础用法汇总-菜鸟入门级

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

Shell编程(二)-if判断及特殊用法,文件目录属性判断,case判断

[toc] Shell编程(二) 一.shell脚本中的逻辑判断 1.1 判断语句if 1.1.1 格式1: if 判断语句:then command fi 示例1 # vim if01.sh //判断数值大小第一种方法用[],注意前后空格 #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi [[email protected] ~]# sh if01.sh ok [ ] -gt:大于, [ ] -lt:小于, [ ] -ge:大于或等于, [ ] -

周期性任务计划,包管理,sed以及shell编程基础

周期性任务计划,包管理,sed以及shell编程基础 1.每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"[[email protected] /]# crontab -e0 /12 /usr/bin/tar -zcf /data/backup/etc-$(date '+%Y-%m-%d--%H-%M').tar.gz /ect/*2.rpm包管理功能总结以及实例应用演示rpm是一个功能十分强大的软件包管理系统,