【介绍】

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文件中

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

  1. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  2. day14 linux三剑客之sed命令

    day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...

  3. (转)不看绝对后悔的Linux三剑客之sed实战精讲

    不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...

  4. Linux 三剑客之sed

    目录 Linux 三剑客之sed 命令补充: sort命令 uniq命令 cut命令 tr命令 wc命令 三剑客 - sed 编辑模式: 定位分类: 实例如下: d模式--删除模式 p模式--打印 a ...

  5. (三)linux三剑客之sed

    一.sed是什么? 二.sed的工作原理? 三.sed的基本用法? 四.sed的进阶使用? 一.sed是什么? sed 就是一个非交互式流编译器: 交互式:文件缓存.人工编译.全局并行可逆 非交互式: ...

  6. linux三剑客之sed命令

    一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...

  7. Linux 三剑客 -- awk sed grep

    本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...

  8. linux三剑客之sed深度实践

    参数: -a:追加文本到指定行后 -i:插入文本到指定行前 1.单行增加 [root@redhat~]#   sed  ' 2a  6,f '  linux.tet 1,a 2,b 6,f 3,c 4 ...

  9. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

随机推荐

  1. python3中的zip函数

    zip函数的作用: zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象. 这个可迭代对象可以使用循环的方式列出其元素 若多个可迭代对象的长 ...

  2. C#面向对象基础--类与对象

    1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...

  3. 异常处理之try catch finally

    package com.sxt.wrapper.test2; /* 0418 * 异常处理 * 采用异常处理的好处:保证程序发生异常后可以继续执行 * e.printStaceTrace:打印堆栈信息 ...

  4. concepts

    webpack是JS应用程序的静态模块打包工具.webpack在处理你的应用时,会递归的构建依赖项,这些依赖项包括你的应用程序所需要的所有模块,然后把这些模块打包到一个或多个bundles中. 一.E ...

  5. HZOJ 那一天她离我而去

    一个数据水到不行的题,各路大佬用各种方法A掉了这个题(比如A*,最短路,dfs……). 这里只说一下我的暴力和被碾压的正解. 暴力AC系列: 要找过1点的最小环,那么这个环可以拆成两部分,与1相连的两 ...

  6. Tyvj 1864 [Poetize I]守卫者的挑战

    P1864 [Poetize I]守卫者的挑战时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻 ...

  7. Python关键点常识

    关键点常识 Python的发音与拼写 Python的作者是Guido van Rossum(龟叔) Python正式诞生于1991年 Python的解释器如今有多个语言实现,我们常用的是CPython ...

  8. laravel 常用文档

    [ Laravel 5.6 文档 ] 快速入门 —— 目录结构  laravel学院 http://laravelacademy.org/post/8657.html Laravel 的缓存系统    ...

  9. centos linux ip地址无法连接数据库,ssh登录服务器时必须使用22端口

    问题一:连接数据库时直接使用ip地址无法连接,必须使用ssh方式才能连接? 问题二:ssh登录服务器时必须使用22端口,在/etc/ssh/sshd_config中添加了10086端口,防火墙中已开启 ...

  10. laravel怎么开启调试模式

      在.env文件里有个APP_DEBUG=true,如果是false,改成true就好了.