一、简介

非交互式的处理 一行一行的读入处理 占用系统空间少 大文件一般用sed节省内存

语法:语法 sed [选项] '行的定位 动作' 文件...

参数 说明
-e 允许进行多项编辑
-n 静默输出 关闭模式空间的输出 不会输出未匹配的行 一般与p命令联合使用
-r 允许使用扩展正则
-i 直接作用于原文件 没有输出 在使用前先不加 看看效果
-i.bak 修改原文件前先备份
-f 后接sed脚本

二、示例

命令 说明
sed -r 's/(.)(.)/\2/' pass 删除每行的第一个字符
sed -r 's/(.)/hello\0/' pass 在每行行首插入hello
sed -r 's/(.)(.)/\1/' pass 删除每行的第二个字
sed -r 's/[0-9]/(\0)/g' pass 把每个数字用()括起来 如:(1)(2)
sed -r 's/[0-9]+/(\0)/g' pass 把每个数值用()括起来 如:(12)
sed -r 's/(.)(.)$/\2/g' pass 删除每行的倒数第二个字符
sed -r 's/(.)(.*)(.)/\3\2\1/g' pass 交换每行的第一个和最后一个字符
sed -r 's/<[a-zA-Z]{3}>//g' pass 删除刚好三个字符的单词
sed -r 's/ro | da/A/g' pass 把ro或da替换成A
sed -r 's/[a-zA-Z]+//' pass 删除每行的第一个单词(纯字母)
sed -r 's/([a-zA-Z]+)(.*)(<[a-zA-Z]+)(a-zA-Z)([a-zA-Z]+)$/\3\2\1\4\5/g' pass 交换第一个和倒数第二个单词(纯字母)
sed 's/root/ROOT/2' /tmp/passwd 把第二个root替换成ROOT
sed 's/root/ROOT/g2' /tmp/passwd 把每一行第二个开始的root替换成ROOT
cat -n /etc/passwd > /tmp/pass 将passwd编号写入到pass
cat -n /etc/passwd | head >/tmp/pass 将passwd前十行编号写入到pass
sed -r 's/\b[a-zA-Z]{4}\b/AAAA/g' pass 将刚好4个字符的单词替换成AAAA (abcd)
sed 's/b{4}/AAAA/g' pass 将bbbb替换成AAAA

三、加参数示例

命令 说明
sed -nr '/^root/p' /tmp/pass 以root开头行
sed -n '1~2p' /xx/xx 打印奇数行
sed -n '2~2p' /xx/xx 打印偶数行
sed -n -e '2p' -e '5p' /tmp/pass 2 5行
sed -n -e '2p;5p' /tmp/pass 2 5行
sed -n -e '2,5p' /tmp/pass 2-5行
sed -nr '/sh/,/xx/p' /tmp/pass 以sh开始 以xx结尾
sed -n -f sed.sh /tmp/pass 接sed脚本
sed '1!d' passwd 删除除第一行以外的所有行
sed '/root/ w /tmp/a.txt' passwd 将passwd含root的行写入到/tmp/a.txt里
sed '2 i hello' passwd 在第二行前面插入hello
sed 'y/abc/ABC/' passwd 将passwd里的abc一一对应替换成ABC
sed 's/[a-z]/\u&/g' passwd 小写字母换成大写字母
sed 's/[A-Z]/\l&/g' passwd 大写字母换成小写字母
sed '2 a hello' passwd 在第二行后面追加hello
sed '2 c hello' passwd 将第二行替换成hello
sed -n '2{n;p}' passwd 打印第二行的下一行
sed '8q' passwd 处理第8行后退出sed

四、模式空间,保留空间

模式空间:用于处理文本行

保留空间:用于保存已处理完的文本行 最大保存8192字节 默认有一个空行

命令:d  删除模式空间里的内容,开始下一个循环

   h H 复制/追加模式空间的内容到保留空间

   g G 复制/追加保留空间的内容到模式空间

   x  交换保留空间和模式空间的内容

命令 说明
sed '1h;1d;2G' passwd 将第一行第二行替换输出
sed '1h;1d;2G;2h;2d;3G' passwd 输出3 2 1行 2G后2 1行为一个整体2行
sed '1,$ a \ ' passwd sed 'G' pass 每行后面加上空行
sed '1h;1d;2,9{G;h;d;};10G ' passwd 从末尾往上查看文件 
sed '1!G;$!h;$!d' pass
sed -r '1h;2~2G ' passwd 在偶数行下添加第一行的内容
sed '/sh$/ r /etc/redhat-release' pass 在sh结尾的行下方插入文件内容

五、匹配换行符与空格

5.1 换行符

sed ":label;N;s/\n/ /;b label" test.txt

正常情况下sed无法匹配换行符,这是因为sed 模式是以\n换行符作为行的结束标记的

label:    这是一个标签,用来实现跳转处理,名称可自取,后面的 b label 就是跳转指令

N:        N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见

s/\n/ /:  替换命令,将换行符替换成空行

b label:  b是sed的跳转命令,跳转到指定的标签处

5.2 空格

使用 \s 或者 [[:space:]] 表示

sed 's/[[:space:]]/,/g' test1.txt
sed 's/\s/,/g' test1.txt

sed 流编辑器的更多相关文章

  1. Linux三剑客之sed流编辑器

    一.功能说明 Sed是Stream Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. 二.语法格式 Usage: sed [options] [se ...

  2. 【Shell案例】【!~//、grep反向查找、sed流编辑器】13、去掉所有包含this的句子

    描述写一个 bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出示例:假设输入如下:that is your bagis this your bag?to the deg ...

  3. Linux下的sed流编辑器命令详解

    sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...

  4. Linux sed 流编辑器

    sed是stream editor的简称,也就是流编辑器.盗用一张图片解释原理 命令格式: SYNPPSIS: sed [OPTION]… {script-only-if-no-other-scrip ...

  5. sed流编辑器

    一.前言 (一).sed 工作流程 sed 是一种在线的.非交互式的流编辑器,它一次处理一行内容.处理时,把当做前处理的行存储在临时缓存区中,成为“模式空间”(pattern space),接着用se ...

  6. Shell:sed流编辑器

    转载:http://blog.sina.com.cn/s/blog_ac9fdc0b0101lvdv.html sed和awk是永远地痛,学了又忘,主要是木有横向对比过,所以总把握不到精髓.它可以完美 ...

  7. SED单行脚本快速参考(Unix 流编辑器)(转)

    sed.sourceforge.net被封杀,特在此处贴上官方的sed 使用说明文档 SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日 英文标题:USEFUL ONE-LINE S ...

  8. SED单行脚本快速参考(Unix 流编辑器)

    ------------------------------------------------------------------------- SED单行脚本快速参考(Unix 流编辑器) 200 ...

  9. Shell 基础 -- 流编辑器 sed 详解

    一.流编辑器 sed 与命令 sed Linux 中,常使用流编辑器 sed 进行文本替换工作.与常使用的交互式编辑器(如vim)不同,sed 编辑器以批处理的方式来编辑文件,这比交互式编辑器快得多, ...

  10. sed:轻量级流编辑器

    一. sed命令 sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器.sed主要是用来将数据进行选取.替换.删除.新增的命令 注意:vi命令只能修改文件,但不能修改命令的结果,如 ...

随机推荐

  1. 思科4331 语音网关配置, cisco 4331 router 配置文件

    GW01#cisco_ROUTER01#cisco_ROUTER01#sh clocisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01 ...

  2. 3. Shell 条件判断

    重点: 条件测试. read. Shell 环境配置. case. for. find. xargs. gzip,bzip2,xz. tar. sed. 1)Shell 的配置文件 Bash Shel ...

  3. 【Javaweb】Servlet三|实现Servlet程序的几种方法及Servlet继承体系说明

    GET和POST请求的分发处理 代码如下 注意页面要和index位置一样否则浏览器找不到 注意大小写 HttpServletRequest httpServletRequest = (HttpServ ...

  4. 从零开始的 dbt 入门教程 (dbt-core 基础篇)

    最近一直在处理数据分析和数据建模的事情,所以接触了 dbt 等数据分析的工具,国内目前对于 dbt 比较详细的资料不多,所以打算写四道五篇 dbt 相关的文章,本文属于 dbt 系列的第一篇,本篇主要 ...

  5. Enterprise Architect去掉元素背景渐变效果

    打开设置界面:TOOLS - Options 修改Gradients and Background的Gradient Fill Direction for属性为none即可

  6. JTAG串链

  7. [NOI online2022普及A] 王国比赛

    题目描述 智慧之王 Kri 统治着一座王国. 这天 Kri 决定举行一场比赛,来检验自己大臣的智慧. 比赛由 \(n\) 道判断题组成,有 \(m\) 位大臣参加.现在你已经知道了所有大臣的答题情况, ...

  8. [ARC156D] Xor Sum 5

    Problem Statement You are given a sequence of $N$ non-negative integers $A=(A_1,A_2,\dots,A_N)$ and ...

  9. CH395实现主动ping对端功能(代码及说明)

    目录 1.PING原理 1.1简介 1.2协议 1.3通信流程 2.代码解释 3.工程链接 PING原理 1.简介 PING是基于ICMP(Internet Control Message Proto ...

  10. 一文聊透 Linux 缺页异常的处理 —— 图解 Page Faults

    本文基于内核 5.4 版本源码讨论 在前面两篇介绍 mmap 的文章中,笔者分别从原理角度以及源码实现角度带着大家深入到内核世界深度揭秘了 mmap 内存映射的本质.从整个 mmap 映射的过程可以看 ...