linux sed基本使用

简介:

sed基本编程

理论部分

 

编辑特性

 

sed 流编辑器 stream editor  文本编辑器 操作文本,按行进行.逐行处理  并不直接处理文本文件,而是将编辑的行,读取到内存 (内存空间称为模式空间) 在内存中编辑 输入到屏幕上.

 

文本处理流程

注释:

把行 读取到内存 à如果符合模式à使用sed命令编辑à输出到屏幕

 

 

sed根据匹配的模式条件处理文本

sed默认不对源文件做任何处理,只对模式空间的数据做处理.处理结束 将模式空间的内容输出到屏幕;

sed简单的文本编辑语言

 

 

sed语法格式

sed [选项]AddressCommand 修饰符 file1… file2 ..

 

参数解释

选项:

-n:不显示模式空间的内容,只显示符合条件的行.

-i:直接修改源文件(小心)

-e:多个操作同时进行 

Address:  地址范围

 

1. LineNumber       #特定的行    ($:最后一行)

2. Start,End          # 起始行,结束行 (1,100)

3. /^root/           #正则表达式   (找出以root开头的行)

4. mode1,mode2    #第一次被模式1匹配的行开始,到第一次被模式2匹配的行结束.

5. StartLine, +n      #从现在的行到往后n行  5,+2

 

Command: 执行的命令

 

   d: #删除符合条件的行;

p:输出 打印符合条件的行;

   a \内容:在指定的行后面追加新的内容;

 i \内容:在指定的行前面追加新的内容;

r  file :将指定的文件的内容添加到符合条件的行

w file : 将指定的文件的内容另存为符合条件的行处

s /模式/字符/ :查找并替换   s###  s@@@

修饰符

 

 g :替换所有

 i: 忽略字符的大小写

 

 

实战部分

d: #删除符合条件的行;          

root@compute:~/sed#sed‘1,2d’  /etc/passwd    删除/etc/passwd 前两行.

root@compute:~/sed#sed‘1d’   /etc/passwd     只删除第一行.

root@compute:~/sed#sed‘3,$d’  /etc/passwd    删除/etc/passwd   3-最后一行

root@compute:~/sed#sed‘/root/d’ /etc/passwd    使用模式 删除符合root的行.但是会删除以root 开头的所有行

root@compute:~/sed#sed‘1,+3d’/etc/passwd     删除4行 第一到第四行.

root@compute:~/sed#sed '31,+6d' passwd          删除 31行后面6行

 

p:输出 打印符合条件的行;

sed‘/^root/p’ /etc/passd  #显示以root开头的行,会显示所有内容;

root@compute:~/sed#sed '/^root/p' passwd

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

 

   

root@compute:~/sed# sed -n'/^root/p' passwd #只显示符合条件的行;

root:x:0:0:root:/root:/bin/bash

 

a \内容:在指定的行后面追加新的内容;

root@compute:~/sed#sed '/^nova/a\Glance:x:1002:1002::/home/glance:/' passwd

nova:x:112:120::/var/lib/nova:/bin/false

Glance:x:1002:1002::/home/glance:/

#在匹配nova开头的行后面添加一行新的内容 内容是 “Glance:x:1002:1002::/home/glance:/”

 

添加多行,使用\n换行符

root@compute:~/sed#sed '/^nova/a\#This is a Glance user\nGlance:x:1002:1002::/home/glance:/'passwd

nova:x:112:120::/var/lib/nova:/bin/false

#This is a Glance user

Glance:x:1002:1002::/home/glance:/

 

i \内容:在指定的行前面插入新的内容;

root@compute:~/sed# sed'/^nova/i\#Inert a line:' passwd

#Inerta line:

nova:x:112:120::/var/lib/nova:/bin/false

 

r  file : 将指定的文件的内容添加到符合条件的行处

root@compute:~/sed# sed'5r /etc/shadow' passwd

将/etc/passwd第5行的后面添加/etc/shadow文件里的内容

 

$r最后一行

root@compute:~/sed# sed'$r /etc/shadow' passwd

1,2r 第一和第二行都添加

root@compute:~/sed# sed'1,2r test.txt' passwd

root:x:0:0:root:/root:/bin/bash

#This is a test file.

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

#This is a test file.

 

 

w file : 将指定的文件的内容另存为符合条件的行处

root@compute:~/sed# sed'/^root/w root.txt' passwd

root.txt  另存为的文件  目的文件

passwd 

 

s /模式/字符/查找并替换

将root替换为andy,-g为全部替换,不加g只替换第一个查询到的

root@compute:~/sed#sed 's/root/andy/' root.txt

andy:x:0:0:root:/root:/bin/bash

root@compute:~/sed#

 

 

 

g:全部替换

root@compute:~/sed#sed 's/root/andy/g' root.txt

andy:x:0:0:andy:/andy:/bin/bash


本文转自    OpenStack2015 博客,原文链接:      http://blog.51cto.com/andyliu/1851043  如需转载请自行联系原作者


相关文章
|
Unix Linux 测试技术
|
4月前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
3月前
|
Linux Perl
Linux之sed命令
Linux之sed命令
|
3月前
|
Linux Perl
6-20|linux sed命令
6-20|linux sed命令
|
4月前
|
Linux Shell Perl
在Linux中,如何使用sed命令进行文本替换?
在Linux中,如何使用sed命令进行文本替换?
|
4月前
|
数据挖掘 Linux Perl
在Linux中,awk和sed命令的作用?
在Linux中,awk和sed命令的作用?
|
5月前
|
存储 Unix Linux
探索Linux中的sed命令:强大的文本处理工具
`sed`是Linux/Unix的流编辑器,用于文本替换、删除、新增等操作,无需直接编辑文件。它逐行处理输入,存储在模式空间,执行脚本后输出。主要特点是非交互、支持正则表达式和简洁语法。示例:`sed 's/apple/orange/g' example.txt`替换文本,`/error/d`删除包含"error"的行,`a\---`在每行后加"---"。使用时注意备份、测试命令和理解正则表达式。
|
7月前
|
Unix Linux Perl
Linux之sed命令详解
`sed`是一个强大的文本处理工具,通过合理的使用表达式和选项,可以实现对文本的多种操作,如替换、删除、插入等。
79 0
|
7月前
|
Linux Perl
百度搜索:蓝易云【Linux中一些Sed命令技巧介绍】
这些是一些常用的Sed命令技巧,它们可以帮助你在Linux系统中对文本进行处理和转换。在使用Sed命令时,建议先使用 `-n`选项进行测试,确保结果符合预期,然后再考虑是否使用 `-i`选项将更改保存到原文件。
317 0
|
7月前
|
Linux 测试技术 Shell
软件测试/测试开发|Linux sed命令详解
软件测试/测试开发|Linux sed命令详解