您的位置:首页 > 其它

sed命令的使用

2015-08-04 18:34 288 查看
在shell脚本的文本处理中,sed与awk是两把利器,sed主要用于行处理。使用好会很快地进行文件的处理。

下面来看看sed的使用。

sed的使用方法如下:

sed [flag] ... {expression or script} [input_file]...


实际中更常见的表示方式:

sed [flag] 'SELECTION edit-instructions'  file


这里的flag选项有以下几个:
-n ,就是安静模式,一般在Linux中会将命令的输出全部打印出来,有时候我们只对sed处理过的结果感兴趣,这里我们需要使用这个选项,只仅仅将sed处理过的结果打印出来;

-e expression or script,将要处理的命令(expression or script)写入到程序的运行列表,此选项可以使sed支持多点编辑,使用多个expression或者script时,使用逗号隔开;

-f file,添加file中定义的命令到程序的运行列表;

-i ,直接修改读取的文件而不输出到终端;

-l N ,指定换行期望的长度N;

-r ,脚本中使用扩展正则表达式;

-s ,将输入的文件视为各个独立的文件而不是一个长得连续的输入;

-u ,从输入文件读取最少的数据,更频繁地刷新输出;

然后有关sed的script:

a ,此选项用来新增内容到指定行的后面,例如:'2a hello world',添加hello world到第二行的后面,'$a hello world‘添加hello world到最后一行的后面;

i ,此选项用来插入新的内容到制定的前面,和a类似;

c ,此选项用来替换指定行的内容为新内容,例如:'2c hello' '1,4c Hi';

d ,此选项用来删除指定行;

p ,此选项用来显示指定的行;

s ,此选项用来进行取代替换操作,可以结合正则表达式进行操作,例如 ‘1,20s/hello/shell/g’表示将1~20的hello全部替换为shell。

以上就是sed命令的参数说明,在实际的应用中可以结合正则表达式进行文本的处理。

正则表达式:

元字符

功能
示例
匹配结果
^
行首定位符
/^supinfo/
匹配所有以supinfo开头的行

$
行尾定位符
/supinfo$/
匹配所有以supinfo结尾的行

\<
词首定位符
/\<supinfo/
匹配出现以supinfo为开头的词的行

\>
词尾定位符
/supinfo\>/
匹配出现以supinfo为结尾的词的行

.
匹配一个字符
/su…fo/
包含su,后面紧跟三个任意字符,然后紧跟着fo的行

*
匹配0个或多个前一字符
/_*supinfo/
supinfo前有0个或多个下划线的行

[]
匹配一组字符里的任意字符

/[Ss]pinfo/
包含Supinfo或supinfo的行
[x-y]
匹配指定范围内的字符
/[A-Z0-9]supinfo/
supinfo之前有一个A到Z或0到9的字符

[^ ]
匹配不在指定范围内的字符
/[^A-Z0-9]supinfo/
supinfo之前有一个既不是A到Z又不是0到9的字符

x\{m\}
x\{m,\}
x\{m, n\}
根据字符x出现的次数匹配:
m次;大于等于m次;大于等于m次但小于等于n次

/s\{2,5\}/
匹配有2到5个连续出现的s的行
\
转义元字符
/supinfo\. /
匹配包含supinfo,然后后面紧跟一个句点的行(没有 \ 的时候是匹配一个字符)

\(…\)
创建一个字符标签
/(SUPINFO):use\1NE/
括号中的字符被保存在标号为1的标签里,以后可以用\1来引用。标签编号从左到右依次为1,2,3……最多可以有9个标签。这个例子查找的是SUPINFO:后面跟着一个 use
SUPINFONE的字符串

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: