Linux sed命令使用

sed基本用法:

sed:stream Editor 行编辑器

sed:模式空间

默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后,将模式空间内容打印出来

sed  [options]‘AddressCommand‘ file ...

是对file中的文件中的符合Address指定地址范围内的行执行Command编辑命令

options:

-n:静默模式

不显示模式空间中的内容,仅显示被匹配的内容

-i:直接修改原文件

-e SCRIPT(脚本) -e SCRIPT:可以同时执行多个脚本 每个-e就可以执行一个 脚本

-f /path/to/sed_srcipt:将-e的脚本保存在一个文件中,通过-f读取此文件执行

sed -f /path/to/sed_srcipt

-r:表示使用扩展的正则表达式

Address方式:

1. StartLine,EndLine

格式例如:1,100,从第1行到第100行

$:表示最后一行

2./Pattern(正则表达式)/

例如:/^root/  表示以root开头的行

3. /pattern1/,/pattern2/

表示:第1次被pattern1匹配到的行开始,第1次被pattern2匹配到的行结束,这中间的所有行

4.LineNumber

指定的行

5.StartLine,+N

表示:从指定的StartLine行开始,向后的N行

Command:

d:删除符合条件的行

$ sed ‘2d‘ example-----删除example文件的第二行。

*

$ sed ‘2,$d‘ example-----删除example文件的第二行到末尾所有行。

*

$ sed ‘$d‘ example-----删除example文件的最后一行。

*

$ sed ‘/test/‘d example-----删除example文件所有包含test的行。

例如:

[[email protected] data]# sed "1,2d" /etc/issue   ---> 表示删除第1和第2行

Mage Education Learning Services

http://www.magedu.com

[[email protected] data]# cat /etc/issue

CentOS release 6.6 (Final)

Kernel \r on an \m

Mage Education Learning Services

http://www.magedu.com

[[email protected] data]# sed "1d" /etc/issue    --->表示删除第1行

[[email protected] data]# sed "1,+3d" /etc/issue -->表示删除第1行以及往后的3行,共4行

[[email protected] data]# sed "/^\//d" /etc/issue --->表示删除以/开头的行,模式必须要//夹起来

p:显示符合条件的行

例如:

[[email protected] data]# cat ./test

he like her

she is a good boy

what are you doing

[[email protected] data]# sed /he/p ./test  --->将行中包含he的行显示出来

he like her

he like her ---->从执行结果看,符合模式匹配的行显示了2次,原因是sed命令的默认意思

she is a good boy 将模式空间中的命令行处理过后还要显示出来,显示的那一行在模式空间中

she is a good boy 还存在,sed命令模式是显示模式空间,因此能匹配到的显示2次,如果不想

what are you doing          显示模式空间中的,可以是用-n,显示静默模式,不显示模式空间的

[[email protected] data]# sed -n /he/p ./test   --->静默模式,只显示符合条件的行

he like her

she is a good boy

c:取代,c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

例如:

[email protected] ruby]# cat ab

Hello!

ruby is me,welcome to my blog.

end

[[email protected] data]# sed  ‘1,2c hi‘ ./linux

hi

end

a \string:在指定的行后面追加新行,内容为string

例如:

[[email protected] data]# sed "/he/a \welcom to linux world" ./test -->在行中有he的行后追加一行

he like her

welcom to linux world

she is a good boy

welcom to linux world

what are you doing

[[email protected] data]# sed "/he/a \welcom to linux world\nthe two line" ./test --->追加两行,

在字符间加"\n"表示换行

i \string:在指定的行前面追加新行,内容为string

例如:

[[email protected] data]# sed "/he/i \welcom to linux world" ./test

welcom to linux world

he like her

welcom to linux world

she is a good boy

what are you doing

r file(文件路径):将指定的文件的内容,添加至符合条件的行处

例如:

[[email protected] data]# sed ‘2r ./first.sh‘ ./test  --->此处必须要用单引号,双引号就出错

he like her

she is a good boy

#!/bin/bash

U=`wc -l  /etc/rc.d/rc.sysinit |cut -d‘ ‘ -f1`

G=`wc -l /etc/rc.d/init.d/functions |cut -d‘ ‘ -f1`

sum=$[$U+$G]

echo $sum

what are you doing

[[email protected] data]# sed ‘1,2r ./first.sh‘ ./test --->在第1行和第2行后都添加

w file(文件路径):将指定范围内的内容另存在指定的文件中

例如:

[[email protected] data]# sed ‘/he/w ./xx.txt‘ ./test -->将./test文件中符合条件的行保存至./xx.txt

he like her 文件中,事先xx.txt可以不存在,如果多次执行

she is a good boy 保存在xx.txt中是覆盖追加的,此处还显示在屏幕

what are you doing 上是因为,工作在模式空间而不是静默模式

[[email protected] data]# cat ./xx.txt

he like her

she is a good boy

s/pattern/string/修饰符:将每行中符合pattern模式的行替换为string,默认只替换每行中第一次被模式匹配到的字符串

或[email protected]@@修饰符或s###修饰符都行,string是字符串,不能是正则表达式

如果要全部替换需要加修饰符

g:全局替换

i:查找时忽略大小写

&:引用模式匹配整个串

例如:

[[email protected] data]# sed ‘s/o/T/‘ ./test --->将查找的每行中第1个"o"的替换为T

he like her

she is a gTod boy

what are yTu doing

[[email protected] data]# sed ‘s/o/@/g‘ ./test -->加上g修饰符,则全部替换

he like her

she is a [email protected]@d [email protected]

what are [email protected] [email protected]

[[email protected] data]# sed ‘[email protected]\(l..e\)@\[email protected]‘ ./test

he liker her

she is a good boy

what are you doing

[[email protected] data]# sed ‘[email protected]@&[email protected]‘ ./test --->此处@代表之前的整个模式l..e,\1和&在不同的地方有不同的方便

he liker her

she is a good boy

what are you doing

时间: 2024-10-25 23:56:08

Linux sed命令使用的相关文章

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反

Linux sed命令小结

1.什么是sed sed,流编辑器,即stream editor.它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出. 2.sed的使用格式 sed [options] "AdressCommand" file1,file2,... 说明: a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配. b.Command表示将符合Address的行进行XXX操作.注意默认情况下

linux sed命令中的正则表达式问号、加号、圆括号等需要转义

linux sed命令内的正则表达式语法分两种,一种叫Basic (BRE) Syntax,另一种叫Extended (ERE) Syntax.默认使用的是BRE. 这个BRE就是一个简化版,语法稍微有点不一样,问号.加号.圆括号.花括号和竖线没有特殊含义,就代表字符本身,如果要原本定义的实现特殊含义,需要用反斜杠(\)转义……详情请见: https://www.gnu.org/software/sed/manual/html_node/BRE-vs-ERE.html#BRE-vs-ERE

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile

2.2 linux sed命令详解

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数

linux sed命令详解,非常强大

转载:http://blog.chinaunix.net/u/22677/showart_1076318.html   1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每处理完一行就将其从临时缓冲区删除,然后将下一行读

Linux Sed命令学习笔记

1 功能说明 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出或者加入i参数.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 小结:sed的功能是,对字符串进行增加.删除.改变.查找,即增删改查! 2 语法格式 s

Linux sed命令 以行为单位编辑文本,或替换文本中的文字

sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容 HELLO LINUX! Linux is a free unix-type opterating system. This is a linux testfile! Linux test 使用sed命令后,输出结果如下: $ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串 HELLO LINUX

linux sed命令详解(转)

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n