sed命令

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e

sed的选项、命令、替换标记

命令格式

sed [options] `command` file(s)
sed [options] -f scriptfile file(s)

选项与参数:

-e(script)或--expression=(scrip):以选项中指定的script来处理输入的文本文件
-f(script文件)或--file=(script文件):以选项中指定的script文件来处理输入的文本文件
-n或--quiet或--silent:仅显示script处理后的结果-V或--version:显示版本信息

-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

sed命令

a\ 在当前行下面插入文本
i\ 在当前行上面插入文本
c\ 把选定的行改为新的文本
d 删除,删除选择的行
D 删除模块的第一行
s 替换指定字符
h 拷贝模块的内容到内存中的缓冲区
H 追加模块的内容到内存中的缓冲区

sed替换标记

g 表示行内全面替换
p 表示打印行
w 表示把行写入一个文件x 表示莫板块中的文本和缓冲区中的文本y 表示把一个字符翻译为另外的字符g 已匹配字符串标记

sed用法实例
以行为单位的替换与显示

cp /etc/passwd ./file

sed '1,10s/root/roots/' file

-n选项和p命令一起使用表示只打印那些发生替换的行:
sed -n '1,10s/root/roots/p' file

以行为单位的新增/删除

删除空白行

sed '/^$/d file

删除文件的第二行

sed '2d' file

sed '2,$d' file

sed '/^test/d' file

数据的搜寻并显示

nl /etc/passwd | sed '/root/p'
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
....下面忽略

数据的搜寻并删除

nl /etc/passwd | sed  '/root/d'
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
....下面忽略
#第一行的匹配root已经删除了

数据的搜寻并执行命令

搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' 1  root:x:0:0:root:/root:/bin/blueshell

如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'
1  root:x:0:0:root:/root:/bin/blueshell

转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/6238329.html

Linux-sed command相关推荐

  1. learn Linux sed command

    learn Linux sed command一.参考文档:1. sed命令详解http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A ...

  2. linux sed命令_Linux sed命令用法与示例

    linux sed命令 Sed, short for Stream EDitor, is a command that is used to perform text transformations ...

  3. linux sed 选取,linux sed 替换(整行替换,部分替换)、删除delete、新增add、选取...

    sed命令行格式为: sed [-nefri] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上 ...

  4. Linux sed Examples--转载

    原文地址:https://www.systemcodegeeks.com/shell-scripting/bash/linux-sed-examples/?ref=dzone Sed is basic ...

  5. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  6. Linux sed命令完全攻略(超级详细)

    我们知道,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入.删除或替换数据中的文本.但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需 ...

  7. linux sed 不输出,linux-使用awk和sed消除不必要的输出

    从以下命令中,我如何消除之前出现的所有行 Owner RepoName CreatedDate 编辑命令: find /opt/site/ -name '.log.txt' | xargs cat | ...

  8. Linux sed命令使用笔记

    sed 通常用于过滤文本,即它接受文本输入,对其执行一些操作(或一组操作),然后输出修改后的文本.sed 通常用于使用模式匹配或替换文件中多次出现的字符串来提取文件的一部分. Linux sed 命令 ...

  9. linux sed 批量替换多个文件中的字符串

    原文: http://blog.csdn.net/kauu/article/details/1757325 一.linux sed 批量替换多个文件中的字符串 sed -i "s/oldst ...

  10. linux a文本编辑大全,Linux sed 命令 - Linux文档编辑命令大全

    Linux sed 命令是利用脚本来处理文本文件. sed 可依照脚本的指令来处理.编辑文本文件. Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. 语法sed [-hn ...

最新文章

  1. java中怎样克隆,如何在Java中克隆列表?
  2. angular ng-container
  3. bootstrap -- 一个标签中,同时有 col-xs , col-sm , col-md , col-lg
  4. Android Databinding学习
  5. 計算機二級-java11
  6. Python 绘图字体控制 + 文字在图片中的位置调整
  7. 在线swf转html,swf转换器
  8. Linux新手快速入门(万字超详细)
  9. python数学符号读法大全_数学符号读法大全
  10. 3D图像线性插值算法实现
  11. php表单时间控件,phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法...
  12. Spring Boot任务管理
  13. matlab元胞三维数组降维,matlab34种降维典型算法
  14. ALEXA中国网站排名真相调查[内幕调查:出卖Alexa]
  15. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
  16. 远程直播服务器连接失败,哔哩哔哩直播姬连接失败如何解决 直播姬连接失败解决方法攻略大全...
  17. mysql mmm write vip_MySQLHAbyusingMysql-mmm
  18. CodeGear RAD Studio 2007下载
  19. TCP 滑动窗口(快速重传)
  20. 富士通DPK8400E打印机

热门文章

  1. 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)
  2. vs2012 怎样解决 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包的问题
  3. 如何解决“请考虑使用 app.config 将程序集“XXXXXXXX”从版本XXXX重新映射到版本XXXX”的问题
  4. /usr/bin/ld: 找不到 -lmsc----解决方案
  5. 如何删除添加了.css()函数的样式?
  6. elementary os java,吐槽ELEMENTARY OS系统/ELEMENTARY OS系列文章汇总
  7. 常见移动机器人运动学模型总结(图片版)
  8. 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
  9. Java翻译byte数据,java学习|图说String(二):基于byte数组的String方法调用
  10. js记录访问网页的ip_亚马逊新手记录之避免店铺关联