Linux – sed用法介绍

sed是一个非交互性文本流编辑器。它可以编辑文件或标准输入导出的文本拷贝,标准输入可能来自键盘,文件重定向,字符串货变量,或者是一个管道的文本。sed可以随意编辑小或大的文件,一次性处理所有改变,节省了时间。

 

sed读取数据

sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。

 

调用sed

调用sed有三种方式:

l  在命令行键入命令: sed[options] sed命令输入文件

l  将sed命令插入脚本文件,然后调用sed: sed [options]–f sed脚本文件输入文件

l  将sed命令插入脚本文件,并使sed脚本可执行: sed脚本文件 [options]输入文件

 

sed选项如下:

n :不打印。sed不写编辑行到标准输出,缺省为打印所有行。

P :打印编辑行

c :下一名了是编辑命令,使用多项编辑时加入此选项

f :如果正在调用sed脚本文件,使用此选项

 

保存sed输出

如果需要保存改动内容,简单的将所有输出重定向到一个文件即可:sed ‘some-sed-commands’ input-file > myoutfile

 

使用sed在文件中查询文本

sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本

1.      使用行号,可以是一个简单的数字,或者是一个行号范围

2.      使用正则表达式

 Linux – sed用法介绍

基本sed编辑命令

 Linux – sed用法介绍

基本sed编程举例

打印文件中第二行

sed -n ‘2p’ quote.txt

打印文件中1到3行

sed –n ‘1,3p’ quote.txt

打印文件中匹配单词Neave的那一行

sed –n ‘/Neave/’p quote.txt

打印整个文件

sed –n ‘1,$p’ quote.txt  $意为之后一行

匹配任意字母

sed –n ‘/.*ing/’p quote.txt 匹配任意以ing结尾的单词

首行

sed –n ‘1p’ quote.txt

最后一行

sed –n ‘$p’ quote.txt

删除1到3行

sed ‘1,3d’ quote.txt

替换文本

[address[,address]] s/ pattern-to-find/replacement-pattern/[gpwn]

g 替换全局所有出现模式

p 打印输出结果

n 不打印输出结果

w 将输出定向到一个文件

替换night为NIGHT

sed ‘s/night/NIGHT/’ quote.txt

进行全局替换

sed ‘s/night/NIGHT/g’ quote.txt

将替换结果写入一个文件,将替换结果写入sed.out

sed ‘s/night/NIGHT/w sed.out’ quote.txt

 

要附加或修改字符串,可以使用(&)命令

sed –n ‘s/played/from Hockering &/p’quote.txt 将played替换成from Hockering

 

将sed结果写入文件命令

w 选项通知sed将结果写入文件

从文件中读文本

r sed将从一个文本源中读文本: sed ‘/company./rsedex.txt’ quote.txt将sedex.txt中的内容附加到模式匹配行。

匹配后退出

sed ‘/.a.*/q’ quote.txt 在首次匹配带字符a的行之后退出。

 

快速一行命令

 Linux – sed用法介绍

sed是一个强大的文本过滤工具,可以从文件或字符串中抽取所需信息。当然如果有时候遇到一个复杂任务,我们可以将问题分成几步,分步执行,可以边执行边测试结果。