sed命令详解

sed是Linux中处理文本最重要的两个工具之一,能够极大简化需要进行的数据处理任务。

sed被称为流编辑器(stream editor),可以根据命令来处理数据流中的数据。这些命令要么从命令行中输入,要么存储在一个命令文本文件中。sed会执行一下操作:

(1)一次从输入中读取一行数据

(2)根据所提供的编辑器命令匹配数据

(3)按照命令修改流中的数据

(4)将新的数据输出到STDOUT

在流编辑器将所有命令与一行数据匹配完毕后,它会读取下一行数据并重复这个过程。在流编辑器处理完流中所有的数据行之后,它就会终止。

sed命令的格式为:

sed options script file

options中常用的选项如下所示:

-e command 将command中的命令添加到已有的命令中,也就是说当sed中使用多个命令时要使用这个选项。
-f file 将file中制定的命令添加到已有的命令中,注意每一个命令都要在独立的一行里。
-i 直接修改源文件。
-n 通常情况下,当所有命令执行完后输出会显示在STDOUT中,-n选项会禁止输出。通常和替换标记p一起使用,只输出被修改过的行。
script中的常用使用方式:

  1. 替换文本中的指定字符,形式为:

sed ‘s/pattern/replacement/flags’

主要用法有(注意:如果不加上-i选项,修改的都是流中的内容,file本身的内容没有变化):

sed ‘s/pattern/replacement/’ file 将file的流中每行的第一个pattern替换成replacement
sed ‘s/pattern/replacement/g’ file 将file的流中每行的每一个pattern替换成replacement
sed ‘s/pattern/replacement/2’ file 将file的流中每行的第二个pattern替换成replacement
sed -n ‘s/pattern/replacement/p’ file 将file的流中每行的第一个pattern替换成replacement,并打印出修改过的行
sed -n ‘s/pattern/replacement/2p’ file 将file的流中每行的第二个pattern替换成replacement,并打印出修改过的行(标记符号可以多个一起使用,且顺序不影响结果)
sed ‘s/pattern/replacement/gw outFile’ file 将file的流中每行的每一个pattern替换成replacement,并将输出保存到outFile中(w标记必须要放在最后,如果写作wg,标记g将无效,并生成名为g outFile的输出文件)
sed ‘2s/pattern/replacement/’ file 将file的流中第二行的第一个pattern替换成replacement
sed ‘2,4s/pattern/replacement/’ file 将file的流中第二行到第四行的第一个pattern替换成replacement
sed ‘2,$s/pattern/replacement/’ file 将file的流中第二行到最后一行的第一个pattern替换成replacement
sed ‘/word/s/pattern/replacement/’ file 将file的流中含有word的行中的第一个pattern替换成replacement,可以使用正则表达式
2. 删除文本

sed ‘d’ file 将file的流中所有行全部删除
sed ‘2d’ file 将file的流中的第二行删除
sed ‘2,4d’ file 将file的流中的第二行到第四行删除
sed ‘2,$d’ file 将file的流中的第二行到最后一行删除
sed ‘/word/d’ file 将file的流中含有word的行删除
3. 插入和附加文本

(1)插入(insert)命令(i)会在指定行前增加一个新行。

(2)附加(append)命令(a)会在指定行后增加一个新行。

格式为:

sed ‘[address]command\new line’

主要用法为($和匹配模式/word/都可以使用):

sed ‘3i\This a an inserted line.’ file 将一个新行插入到file的流的第三行前
sed ‘3a\This a an inserted line.’ file 将一个新行插入到file的流的第三行后
4. 修改行($和匹配模式/word/都可以使用):

sed ‘3c\This is a changed line.’ file 将file的流的第三行修改为This is a changed line.
5. 转换命令

转换(transform)命令(y)是唯一可以处理单个字符的sed命令,格式如下:

sed ‘[address]y/inchars/outchars’

转换命令会对inchars和outchars做一对一映射,inchars的第一个字符会被转换为outchars的第一个字符,inchars的第二个字符会被转换为outchars的第二个字符。如果inchars和outchars的长度不同,sed编辑器会产生一条错误消息:

sed: 1: “y/abc/de/”: transform strings are not the same length

举例如下:

$ echo “1 2 3 1 2 3 2 3 4 5 6” | sed ‘y/123/456/’

4 5 6 4 5 6 5 6 4 5 6

可以看出,转换命令是一个全局命令,会在文本行中找到的所有指定字符进行转换,无法限定只转换在特定地方出现的字符。

  1. 写入文件

sed ‘w outFile’ file 将file的内容写入到outFile中
sed ‘1,2w outFile’ file 将file第一行到第二行的内容写入到outFile中
8. 从文件读取数据($和匹配模式/word/都可以使用):

sed ‘3r newFile’ file 将newFile的内容添加到file的流的第三行之后

参考文献:Linux命令行与shell脚本编程大全(第三版)

阅读更多
安阳股王8年追涨停铁律“1272”曝光,震惊众人。
陕西信息科技 · 燨燚

下载 AWK命令详解 sed命令详解 06-19
AWK命令详解 sed命令详解 AWK命令详解 sed命令详 AWK命令详解 sed命令详解解
下载 linux sed 命令详解 12-20
linux sed 命令详解 资源收集 linux sed 命令详解 资源收集
下载 linux sed命令详解 - lz_memory 12-15
linux sed命令详解
一个退役操盘手肺腑之言,写给无数正在亏钱的散户。
陕西信息科技 · 燨燚
linux/unix命令详解之sed - u012485320的专栏
1507

ps:我只能说别说你会sed。。。这篇综合很多sed文档写成。 1. 功能说明:利用script来处理文本文件。 语  法:sed [-hnV][-e(script)][-f (script文… 来自: u012485320的专栏
初识sed 和gawk - qq_34907701的博客
67

在shell脚本中处理任何类型的数据,使用 sed gwak自动的处理文本文件中的文本。。=====sed编辑器:又称作流编辑器( stream editor ),跟普通交互式文本编辑器恰好相反。在交… 来自: qq_34907701的博客
实例妙解Sed和Awk的秘密——Sed基本操作命令 - btt2013的专栏
239

使用sed工具,可以自动处理文件、分析日志文件、修改配置文件。sed的学习内容:sed是如何进行文本处理的?sed的基本操作命令:文本行处理(增、删、替),字符串替换(取用)sed的高级操作命令sed… 来自: btt2013的专栏
AIX下系统sed使用详解 - 产品经理,程序人生
6120

使用sed去修改或者删除文本中的字符或者字符串。 pg func.txt 0at$the@begining^M The#file#name#is#func,^M 9and%it’s%suffix%is…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值