linuxshell 系列 sed 命令基本用法

来源:互联网 发布:黑米黄牛抢购软件 编辑:程序博客网 时间:2024/05/20 11:36

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定位文本方法选  项意  义xx为指定行号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将保持缓冲区中的内容追加到模式缓冲区


0 0
原创粉丝点击