linuxshell 系列 sed 命令基本用法

sed命令调用有三种方式,一种是直接通过shell命令行的模式调用,其他两种则是将sed命令写入脚本文件中,然后执行脚本文件来进行调用。

注:以下文章中filename表示sed命令操作的目标文件,scriptName表示插入sed命令的脚本文件

三种调用方式的命令格式归纳如下:

①.在Shell命令行(linux终端)输入命令直接调用sed,格式为:

sed [options] 'sed command' filename

②.将sed命令插入脚本文件后,通过sed命令进行调用,格式为:

sed [options] -f scriptName filename  //-f标示正在调用sed脚本文件,scriptName即脚本文件名称

③.将sed命令插入脚本文件后,给脚本文件添加可执行权限,然后直接执行,格式为:

chmod +x scriptName //给脚本文件添加可执行权限

./scriptName filename


需要注意的是③中脚本的编写与②中脚本的编写不一样,③中的sed脚本文件需要以sha-bang(#!)符号开头,sha-bang 后面是解析这个脚本的程序名,比如“/bin/sed”.

不管哪一种调用方式,如果没有指定输入文件(即目标文件filename),sed将从标准输入中接收输入。

sed常用的选项有三个:

-n 除sed命令打印需求外不打印数据到标准输出。

-e  用于执行多个sed命令,如果只执行一个sed命令,可以省略。

-f 表示正在调用sed脚本文件,example:

A)sed -n  ‘/string/=’ filename//在filename中查找‘string’,然后打印出string所在行的行号。只需要打印行号,所以-e省略

B)sed -n -e '/string/=' -e '/string/p' filename //在filename中查找‘string’,然后打印出string所在行的行号和内容。因为打印行号和内容两命令,所以需要-e


sed命令通常由定为文本行和sed编辑命令两部分组成,sed编辑命令对定位文本行进行进行各种处理,sed提供以下两种方式定位文本:

①.使用行号,指定一行,或指定行号范围,example:

A)sed -n '1p' filename//定位到第一行并打印出来

B)sed -n ‘1,10p’ filename //定位到第1行到第10行范围的内容并打印出来

②.使用正则表达式

sed定位文本方法
选  项 意  义
x x为指定行号
x,y 指定从x到y的行号范围
/string/ 查询包含string的行
/string/string/ 查询包含两个string的行
/string/,x 从匹配到string的行号开始到x行号之间的所有行
x,/string/ 从x行号开始到匹配到string的行号之间的所有行
x,y! 查询不包括x和y行之间所有行之外的其他所有行


sed编辑命令
选  项 意  义
p 打印匹配行
= 打印文件行号
a\ 在定位行号之后追加文本信息
i\ 在定位行号之前插入文本信息
d 删除文本行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读取文本
w 往另一个文件中写入文本
y 变换字符
q 第一个模式匹配完成后退出
l 显示与八进制ASCII码等价的控制字符
{} 在定位行执行的命令组
n 读取下一个输入行,用下一个命令处理新的行
h 将模式缓冲区中的文本复制到保持缓冲区
H 将模式缓冲区中的文本追加到保持缓冲区
x 互换 模式缓冲区与保持缓冲区中的内容
g 将保持缓冲区中的内容复制到模式缓冲区
G 将保持缓冲区中的内容追加到模式缓冲区



发布了6 篇原创文章 · 获赞 2 · 访问量 6570
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览