每日掌握一个Linux命令 之 sed工具

来源:互联网 发布:网络热点词汇 编辑:程序博客网 时间:2024/06/16 11:40

每日掌握一个Linux命令 之sed工具

sed:全称 stream editor,是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作。

用法:

sed [-nefr] [动作]

参数:

-n : 安静模式,在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上,但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者操作)才会被列出来

-e : 直接在命令行模式上进行sed的动作编辑

-f : 直接将sed动作写在一个文件内,-f filename 则可以执行filename内的sed操作

-r: sed 动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)

-i: 直接修改读取的文件内容,而不是由屏幕输出

[动作]说明:

[n1[,n2]] funtion
n1,n2:定会存在,一般代表选择进行动作的行数,例如,“10,20[动作行为]” ,在第10行到20行之间进行

function:

a:append 新增,后可接字符串,而字符串会在新的一行出现

c:change替换,c后可接字符串,这些字符串可以替换n1,n2之间的行

d: delete 删除,后通常不接任何参数

i: insert 插入,i后可接字符串,而这些字符串会在新的一行出现,目前的上一行

p: print 打印,将某个选择的数据打印出来,通常会与参数sed -n 一起运行

s: 替换,可以直接进行替换工作,通常这个s的动作可以搭配正则表达式


功能:

1. 以行为单位的新增/删除功能(不会修改原文件)

使用动作参数: d、 a 、 i

nl /etc/passwd | sed '2,5d'   <== 删除第2~5行
nl /etc/passwd | sed '2a drink tea'     <== 在第2行之后,添加新行,行的内容为“drink tea”
nl /etc/passwd  | sed  '2i drink tea'     <== 在第2行之前,插入新行,行的内容为“drink tea”

2. 以行为单位的替换与显示功能(不会修改原文件)

使用动作参数: c、p

nl  /etc/passwd | sed '2,5c  No 2-5 lines'   <==  将第2~5行替换为 No 2-5 lines
nl /et/cpasswd | sed -n '2,5p'     <== 仅显示/etc/passwd中的提2~5行,这里要与-n一起执行,-n代表的是“安静模式”

3. 部分数据的查找并替换的功能(不会修改原文件)  

基本替换格式:

sed 's/要被替换的字符串/新的字符串/g'

例如: /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'     <== 将IP前面的部分予以删除

4. 直接修改文件内容(会修改原文件,慎用)

使用  -i  参数

sed -i 's/\.$/\!/g' regular_express.txt  <== 将regular_express.txt文件内每一行结尾为'.' 的换成'!'