Linux三剑客之sed的基本用法介绍

【介绍】

sed是一款强大的非交互式的文本编辑器,可以对文件文本进行增删改查的相关操作,本文主要是讲解以下sed的基本用法。

【常用选项】


-e


下一个参数为一个sed指令,一般只会用于同一行有多个sed的时候


-f


后面跟保存了sed指令的文件


-i


直接对内容进行修改,不加i时只是预览,并不做实际改动


-n


取消默认输出,只输出处理过的行。

【编辑命令】


a


追加·向匹配行后面插入内容


c


更改·更改匹配行的内容


i


插入·向匹配行前插入内容


d


删除·删除匹配的内容


s


替换·替换匹配到的内容


p


打印·打印匹配到的内容


=


打印匹配到的行号


n


读取下一行


r,w


读和写编辑

【命令实例】

·插入行


sed ‘3ahello‘ test.txt


在第三行后插入"hello"(新行)


sed ‘/123/ahello‘ test.txt


在内容"123"后插入"hello"(新行,每一个匹配后都添加)


sed ‘$ahello‘ test.txt


在文件最后一行后添加"hello"


sed ‘3ihello‘ test.txt


在第三行前插入"hello"(新行)<其他同上>

·更改行


sed ‘1chello‘ test.txt


将文件第一行替换为hello


sed ‘/123/chello‘ test.txt


将文件包含123的行替换为hello


sed ‘$chello‘ test.txt


将文件最后一行替换为hello

·删除行


sed ‘4d‘ test.txt


删除文件第四行


sed ‘1~2d‘ test.txt


从第一行开始,每两行删除一行(删除奇数行)


sed ‘1,2d‘ test.txt


删除1,2行


sed ‘1,2!d‘ test.txt


删除1,2之外所有的行


sed ‘$d‘ test.txt


删除最后一行


sed ‘/123/d‘ test.txt


删除匹配123的行


sed ‘/123/,$d‘ test.txt


删除匹配123的行以及后面所有行


sed ‘/123/,+1d‘ test.txt


删除匹配123的行以及后面一行


sed ‘/^$/d‘ test.txt


删除空行


sed ‘/123\|abc/!d‘ test.txt


删除不匹配123和abc的行(!表示取反)


sed ‘1,3{/123/d}‘ test.txt


删除1~3行中,匹配123的行

·替换内容


sed ‘s/123/abc/‘ test.txt


将文件中的第一个123替换为abc


sed ‘s/123/abc/g‘ test.txt


将文件中所有的123替换为abc


sed ‘s/123/abc/2‘ test.txt


将每行第二个123替换为abc


sed -n ‘s/123/abc/gpw test2.txt‘ test.txt


将每行中所有的123都替换为abc,并将替换后的内容写到test2.txt


sed ‘/#/s/,.*//g‘ test.txt


匹配所有有#的行,将‘,‘以及‘,‘以后的内容替换为空


sed ‘s/..$//g‘ test.txt


将每一行的最后两个字符替换为空,每一个‘.‘代表一个字符


sed ‘s/^#.*//‘ test.txt


将每一条以#开头的行都替换为空行


sed ‘s/^#.*//;/^$/d‘ test.txt


将每一条以#开头的行都去掉(去除注释行,分号做二次操作)


sed ‘s/^[0-9]/(&)/‘ test.txt 或者
sed ‘s/\(^[0-9]\)/(\1)/‘ test.txt


将每一行行首的数字加括号(&代表匹配到的内容)
左侧特殊字符需要转义,右侧不需要(\1代表匹配到的内容)


sed ‘s/$/&abc/‘ test.txt


在每一行后面添加abc字段

·打印文件中的行


sed -n ‘3p‘ test.txt


打印文件中的第三行内容


sed -n ‘2~3p‘ test.txt


从第二行开始,每三行打印一行


sed -n ‘$p‘ test.txt


打印文件最后一行


sed -n ‘1,3p‘ test.txt


打印一到三行


sed -n ‘3,$p‘ test.txt


打印第三行到最后一行


sed -n ‘/abc/p‘ test.txt


逐行读取,打印包含abc的行


sed -n ‘/abc/,3p‘ test.txt


逐行读取,打印第一次匹配abc的行一直到第三行,并将之后匹配abc的行也打印


sed -n ‘2,/abc/p‘ test.txt


打印第二行到匹配abc的行


sed -n ‘/abc/,$p‘ test.txt


打印匹配abc的行到最后一行


sed -n ‘/abc/,+1p‘ test.txt


打印匹配abc的行及其后一行


sed -n ‘/abc/,/123/p‘ test.txt


打印从匹配abc的行一直到匹配123的行

·打印文件的行号


sed -n ‘$=‘ test.txt


打印文件最后一行的行号(同wc -l)


sed -n ‘/error/=‘ test.txt


打印匹配error的行号


sed -n ‘/error/{=;p}‘ test.txt


打印匹配error的行的行号以及内容

·从文件中读取内容


sed ‘r test2.txt‘ test1.txt


会在test1.txt文件的每一行后都追加test2.txt的内容


sed ‘3r test2.txt‘ test1.txt


在test1.txt文件的第三行后追加test2.txt的内容


sed ‘/123/r test2.txt‘ test1.txt


在test1.txt文件中匹配123的行后追加test2.txt的内容


sed ‘$r test2.txt‘ test1.txt


在test1.txt文件的最后一行插入test2.txt的内容

·向文件中写


sed -n ‘w test2.txt‘ test1.txt


将test1.txt文件的内容写到test2.txt文件中(如果没有会创建)


sed -n ‘2w test2.txt‘ test1.txt


将test1.txt文件中的第二行内容写入到test2.txt文件中


sed -n -e ‘1w test2.txt‘ -e ‘$w test2.txt‘ test1.txt


将test1.txt文件的第一行和最后一行写入到test2.txt文件中


sed -n -e ‘1w test2.txt‘ -e ‘$w test3.txt‘ test1.txt


将test1.txt文件中的第一行写入到test2文件中;
最后一行写入到test3.txt文件中


sed -n ‘/abc\|123/w test2.txt‘ test1.txt


将test1.txt文件重匹配abc或者123的行,写入到test2文件中


sed -n ‘/123/,$w test2.txt‘ test1.txt


将test1文件中匹配123的行一直到最后一行,写入到test2文件中


sed -n ‘/123/,+2w test2.txt‘ test1.txt


将test1文件中匹配123的行和之后两行,写入到test2文件中

原文地址:https://www.cnblogs.com/liuxia912/p/12146599.html

时间: 2024-10-10 14:28:18

Linux三剑客之sed的基本用法介绍的相关文章

linux三剑客之sed史上最实用教程!

2016老男孩教育的官方博客干货不断,敬请关注! linux三剑客之sed史上最实用教程!猛戳下面地址即可观看! http://blog.oldboyedu.com/commands-sed/

不看绝对后悔的Linux三剑客之sed实战精讲

二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们

深入浅出linux三剑客之sed必杀技一例

转 http://oldboy.blog.51cto.com/2561410/949365 缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的,老男孩就拿出最后的讲解必杀技(先保密,嘿!),同学们想不会那是不可能的,除非你们自己主动放弃,哈哈.来,开整~! 老男孩linux培训第三节课程课前第考试一题,问题如下 1.如何取得/etiantian文件

Linux三剑客之一sed用法

sed是一种流编辑器,主要针对文本行进行处理,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环.如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出. 主要功能为主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换

linux三剑客之sed入门详解

sed介绍sed流编辑器(stream editor),在三剑客中排行老二,是一款简单的文本编辑语言.sed并不直接处理源文件,而是逐行读取源文件的内容到内存(称模式空间)中,然后在模式空间中使用sed命令处理,再打印模式空间处理后的内容到标准输出.sed的能够实现的功能:增删改查.替换.过滤.取行.sed文本处理原理图 sed命令的语法:sed [选项] 'AddressCommand [修饰符]'inputfile(输入文件)sed命令语法各参数解释 实验环境 [[email protect

Linux三剑客之sed基本应用

sed:三剑客之第二实现对文件的增加 删除 修改 查询 过滤命令格式:sed 选项 sed内置命令 文件-i-e-naidpsg创建文件tobedu.txt,输入内容,并以此文件为例.[[email protected] ~]# cat -n tobyedu.txt 1 I am toby teacher!2 I like badminton ball ,billiard ball and chinese chess!3 our site is tobyedu.com4 5 my qq num

Linux三剑客grep/sed/awk

grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color=auto 或者 --color:表示对匹配到的文本着色显示 -i:在搜索的时候忽略大小写 -n:显示结果所在行号 -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数 -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行 -v:输出不带关键字的行(反向查询,反

linux三剑客之sed

sed命令是一个功能强大的流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,它会把当前处理的文本的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着sed命令会处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,直到文件末尾.需要注意的是,处理前后文件内容并没有改变,除非你使用重定向存储输出或使用特定的选项. 1.使用格式 sed [option] 'AdressCommand' FILE... 2.

Linux三剑客之sed命令

选定行的范围:,(逗号) 删除操作:d命令 显示模式空间内容 追加(行下):a\命令 插入(行上):i\命令 退出:q命令 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 替换操作:s命令 替换文本中的字符串: 全面替换标记g 保持和获取:h命令和G命令 保持和互换:h命令和x命令 sed 简介 sed 工作原理 命令格式 常用选项: 地址定界: 编辑命令: 替换标记: sed元字符集(正则表达式) 高级编辑命令: sed用法实例 作业: 作业: sed命令 sed 简介 Stream