sed用法小结

在linux的学习和使用中,sed,awk,grep的用法的重要性不言而喻,本文从以下几个方面小结了sed的用法:

1、sed的含义

sed 是stream editor;就是流编辑器,和我们用到的vi是不同的,vi是全屏编辑器。而且sed是逐行将文件内容取入到内存,进过sed中指定命令进行处理,然后输出到屏幕的。

2、sed的用法及格式

sed [options] ‘StartAdd,EndAddCommand‘ files,...

[options] 指的是sed的选项。可以省略

StartAdd,EndAdd 指的sed中地址的表示方法

Command指的是sed的处理命令。

files,..可以是多个,是sed的处理对象。即把那个文件放入内存,然后逐行处理的。

3、地址的表示方式

    ‘1,3p‘ passwd #表示的含义是,打印passwd文件1到第三行。绝对行数表示法

   

[[email protected] testdir]# sed -n ‘1,3p‘ passwd

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

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

‘1,+3p‘ passwd #表示的含义是:打印第一行及后面的三行的内容。相对行数表示法

[[email protected] testdir]# sed -n ‘1,+3p‘ passwd

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

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

‘36,$p‘ passwd #表示打印从38行到最后一行的passwd的内容 $表示最后一行

[[email protected] testdir]# sed -n ‘36,$p‘ passwd

user1:x:504:504::/home/user1:/bin/bash

user2:x:505:505::/home/user2:/bin/bash

user3:x:506:506::/home/user3:/bin/bash

‘/pattern/Command‘ #表示匹配到patern的行打印,pattern可以是正则表达式

[[email protected] testdir]# sed -n ‘/^root/p‘ passwd

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

rootbisu:x:500:500:centos_X641:/home/rootbisu:/bin/bash

‘/pattern1/,/pattern2/Command‘ 用command处理/pattern1/首次匹配到的行,到/pattern2/首次匹配到的行的内容

[[email protected] testdir]# sed -n ‘/^\<root\>/,/^\<bin\>/p‘ passwd

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

bin:x:1:1:bin:/bin:/sbin/nologin

sed ‘3p‘ passwd # 表示打印passwd的第三行

[[email protected] testdir]# sed -n ‘3p‘ passwd

daemon:x:2:2:daemon:/sbin:/sbin/nologin

4、sed中命令及参数的用法

sed既然作为一个流编辑器,那么他的主要命令功能应该体现在编辑上。常见的编辑操作有,打印,删除,替换,添加等操作。

d:表示删除符合条件的行

p:表示打印符合条件的行

a:表示在符合条件的行后,格式:a\string 追加新的内容a是append # a后是什么输出什么。    [[email protected] testdir]# sed  ‘/^\<root\>/a\appendtest‘ passwd

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

appendtest

i:insert ,表在符合条件的行前,插入新的string.格式i\string

[[email protected] testdir]# sed  ‘/^\<root\>/i\appendtest‘ passwd

appendtest

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

r:read ,rfile表示在符合条件的行的后面将read的file的内容附加

[[email protected] testdir]# sed ‘/^\<root\>/rgrep.txt‘ passwd

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

This is root

The user is mroot

rooter is a dog‘s name.

Mrooter is not a word

bin:x:1:1:bin:/bin:/sbin/nologin

w:write,wfile表示将符合条件的行写至file中

[[email protected] testdir]# sed -n ‘/^\<root\>/wgrep.txt‘ passwd

[[email protected] testdir]# cat grep.txt

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

s表示查找并替换 # 替换第一次匹配到的项

[[email protected] testdir]# sed  ‘s/root/ROOT/‘ passwd

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

# 加上参数g表示替换所有匹配到项

[[email protected] testdir]# sed  ‘s/root/ROOT/g‘ passwd

ROOT:x:0:0:ROOT:/ROOT:/bin/bash

5、常用的参数:

-n:表示静默模式,只输出处理了的行,其他的不输出

-i:会将command的结果作用到被处理的文件上

-r:表示pattern中可以使用扩展正则表达式

-e: 表示可以使用多个命令。sed -e ‘10,11p‘ -e ‘12,13d‘

6、sed用法的小结及注意事项

    sed的用法非常关键,需要牢记,sed的用法及格式,地址的表示方法,和常用的命令,以及命令的参数,此处还有需要注意的细节是,可以在sed中使用后项引用。

    有一个文本内容如下:

he like his like

she love her love

he like his love

she love his like

有一个需求,想把like变成liker,想把love变成lover应该怎么处理?这个时候可以使用后项引用了。

[[email protected] testdir]# sed   ‘s/\(l..e\)/\1r/g‘ test

he liker his liker

she lover her lover

he liker his lover

she lover her liker

[[email protected] testdir]# sed   ‘s/\(l..e\)/\(l,,e\)r/g‘ test

he (l,,e)r his (l,,e)r

she (l,,e)r her (l,,e)r

he (l,,e)r his (l,,e)r

she (l,,e)r her (l,,e)r

注意,我们发现,‘s/string1/string2/g‘ 其中string可以是正则表达式,如果是用了-r选项,那么还可以使用扩展正则表达式,但是string2是不能使用正则表达式的。


    

时间: 2024-12-21 07:02:29

sed用法小结的相关文章

linux之sed用法

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

C++ typedef用法小结 (※不能不看※)

C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量:以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,

sed用法详解

1. sed简介 sed是streameditor的简称,主要用来对文本的行进行处理,功能类似于awk,可以完美配合正则表达式,只是其更加简单,对文本的列处理功能较弱.处理文本时,sed将文件的一行存储在叫"模式空间"的一个缓冲区,处理完时,就默认将缓冲区的文本送至屏幕,接着处理下一行文本,直至将整个文件处理完. 2. sed用法与参数: sed用法: sed 选项 'commond' inputfile 选项: -e <script> 以-e指定的script来处理输入的

英语语法最终珍藏版笔记- 21it 用法小结

it 用法小结 it 在英语中的意思较多,用法较广,现总结如下. 一.it作句子的真正主语 1.it 指前面已经提到过的人或事物,有时指心目中的或成为问题的人或事物,作真正主语. 例如: What’s this? -It is a sheep? 这是什么??这是一只绵羊. Who is it? -It’s me (I). 谁??是我. It’s the wind shaking the window. 是风刮得窗户响. 2.it指时间.季节.一般用在无人称动词的主语. 例如: What time

iOS开发系列之一 - UIButton 用法小结

// 初始化按钮并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 能够定义的UIButton类型有以下6种: // typedef enum { // UIButtonTypeCustom = 0, 自定义风格 // UIButtonTypeRoundedRect, 圆角矩形 // UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用 // UIButto

iOS开发系列之二 - UILabel 用法小结

// 初始化标签 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; // 设置标签文字 label.text = @"This is a test text.This is a test text.This is a test text."; // 设置标签文字字体 // 使用系统字体 label.font = [UIFont systemFontOfSize:20]; //

Linux sed命令小结

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

linux中sed用法

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

sed用法(一)

sed用法(一) sed 可以实现 grep 的大部分功能,而且还可以查找替换.唯一缺陷是不能有颜色区分显示. -n 只打印符合规则的行 打印指定行 p表示print 知识点一: #sed '10'p -n 1.txt 打印第10行 #sed '1,4'p -n 1.txt 打印1-4行 #sed '5,$'p -n 1.txt 打印5到末行 #sed '10'p 1.txt 不加 -n 打印所有的行,如下图所示: #sed '/root/'p 1.txt|wc -l #sed '/root/'