linux之sed的用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command‘ filename

常用选项:
        -n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。

但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e:直接在指令列模式上进行 sed 的动作编辑;
        -f: 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r: sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i: 直接修改读取的档案内容,而不是由屏幕输出。

常用命令:
        a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;      
        i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为sed.txt)

# sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.

删除某行(对输入流进行操作--input stream)

[[email protected] tmp]# sed ‘1d‘ sed.txt        # 删除第一行
ruby is me,welcome to my blog.
endruby is me,Welcome to my blog.
[[email protected] tmp]# sed ‘$d‘ sed.txt        # 删除最后一行
Hello!
ruby is me,welcome to my blog.end
[[email protected] tmp]# sed ‘2,$d‘ sed.txt      # 删除第二行到最后一行
Hello!
[[email protected] tmp]#

显示某行

[[email protected] tmp]# sed -n ‘1p‘ sed.txt         # 显示第一行
Hello!
[[email protected] tmp]# sed -n ‘2,$p‘ sed.txt       # 显示第二行到最后一行
ruby is me,welcome to my blog.
endruby is me,Welcome to my blog.

模式查询

[[email protected] tmp]# sed -n ‘/ruby/p‘ sed.txt          # 查询包括关键字ruby的所有行
ruby is me,welcome to my blog.ruby is me,Welcome to my blog.
[[email protected] tmp]# sed -n ‘/^r.*g.$/p‘ sed.txt       # 查询以字母‘r‘开头,‘g.‘结尾的行
ruby is me,Welcome to my blog.
[[email protected] tmp]#

增加一行或多行字符串

[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]# sed ‘1a drink tea‘ sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]# sed ‘1,3a drink tea‘ sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
ruby is me,welcome to my blog.
[[email protected] tmp]# sed ‘1,3a drink tea\nor coffee‘ sed.txt
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
drink tea
or coffee
end
drink tea
or coffee
ruby is me,welcome to my blog.

[[email protected] tmp]# cat sed.txt # 说明操作的是输入流
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]#

替换一行或多行

[[email protected] tmp]# sed ‘1c Hill‘ sed.txt            # 第一行替换为Hill
Hill
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]# sed ‘1,2c Hill‘ sed.txt          # 第一行到第二行替换为Hill
Hill
end
ruby is me,welcome to my blog.
[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.

替换一行中的某部分

  格式:sed ‘s/要替换的字符串/新的字符串/g‘   (要替换的字符串可以用正则表达式)

[[email protected] tmp]# sed -n ‘/rub/p‘ sed.txt | sed ‘s/ruby/bird/‘        # 替换ruby为bird
bird is me,welcome to my blog.
bird is me,welcome to my blog.
[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]# sed -n ‘/ruby/p‘ sed.txt | sed ‘s/ruby//‘            # 删除ruby
 is me,welcome to my blog.
 is me,welcome to my blog.

插入(对源文件进行的操作)

[[email protected] tmp]# cat sed.txt                     # 在文件sed.txt中最后一行直接输入"bye"
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[[email protected] tmp]# sed -i ‘$a bye‘ sed.txt
[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[[email protected] tmp]#

删除匹配行(对源文件进行的操作)

格式: sed -i ‘/匹配字符串/d‘  filename  (注:若匹配字符串是变量,则需要"",而不是‘‘)

[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[[email protected] tmp]# sed -i ‘/en/d‘ sed.txt
[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[[email protected] tmp]#

替换匹配行中的某个字符串(对源文件进行的操作)

格式: sed -i ‘/匹配字符串/s/替换源字符串/替换目标字符串/‘ filename

[[email protected] tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[[email protected] tmp]# sed -i ‘/ru/s/ruby/birds/‘ sed.txt
[[email protected] tmp]# cat sed.txt
Hello!
birds is me,welcome to my blog.
birds is me,welcome to my blog.
bye
[[email protected] tmp]#
时间: 2024-11-06 14:57:14

linux之sed的用法的相关文章

linux中sed的用法

sed命令行格式为:         sed [-nefri]  'command'  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来        -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑        -f∶指定sed脚本的文件

linux中sed的用法详解(对行数据的添加、删除等)

sed使用语法 [[email protected] test]# sed --help 用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]... -n, --quiet, --silent                 取消自动打印模式空间 -e 脚本, --expression=脚本                 添加"脚本"到程序的运行列表 -f 脚本文件, --file=脚本文件                 添加"脚本文件"到

linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

关于linux中sed命令的简单用法

linux中sed的学习和使用 今天突然用到了sed这个命令,就即兴学习了一波突然感觉这个功能还是很强的.sed在#man sed下文档查看解释的是:用于过滤和转换文本的流编辑器.即如下图: 我自己用过这个命令之后感觉对于文档来说可以显示某个区间行,显示结果还可以在段前后添加内容删除,替换内容.但是最后才发现,怎么还能直接修改到文件里不仅仅是显示出来,文件内容直接被修改了. 下面就一一介绍这个有趣的命令,莫急莫急一个一个来. 首先找个文件(没用的文件且有内容,搞坏了系统文件可不好玩了)来当测试文

【转载】linux之sed用法

linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中

linux中sed用法

一.sed命令介绍: 1.含义:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件改动,但是不会再屏幕上返回结果. 2.功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 3.参考:http://www.gnu.org/software/sed/manual/sed.html 二.sed用法 1.语法格式:

【转】 linux之sed用法

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

linux之sed用法【转载】

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] 'command' 输入文本 常用选项:        -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.        -e∶直接在

linux笔记三:grep和sed的用法

grep [option] Pattern [FILE...] -i:忽略大小写 --colour:用高亮的颜色显示 -v:显示没有被匹配到的行 -o:只显示被匹配到的字符串 -E:使用扩展正则表达式 -A #:包括后来多少行 -B #:包括前面多少行 -C #:包括前后多少行 扩展正则表达式: 字符匹配: . [] 如:a-z,A-Z [^] 次数匹配: *:其前字符任意次 ?:匹配其前面的字符1次或0次 +:匹配其前面的字符至少一次 {m,n}: 位置锚定: ^:锚定行首,此字符后面的任意内