sed: Stream EDitor,行编辑器

用法: sed [option]... 'script' inputfile...

script: '地址命令'

    常用选项:
-n: 不输出模式中的内容至屏幕
-e: 多点编辑
-f: /path/to/script_file:从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i:原处编辑,慎用 地址定界:
1. 不给地址,对全文进行处理
2.单地址
#:指定的行
/pattern/: 被此处模式所能匹配到的每一行
3.地址范围:
#,#
#,+#
/pat1/,/pat2/
4.~:步进
1~2
2~2 编辑命令:
d: 删除
# sed /^UUID/d /tmp/fstab 删除UUID开头的行
# sed '/^$/d' /tmp/fstab 删除空白行
# sed '1,4d' /tmp/fstab
p: 显示模式空间中的内容
# sed '/^UUID/p' /tmp/fstab
这样会显示两遍,默认会打印模式空间中的内容,可以使用-n不显示模式空间中的内容就只会输出一遍
a \text: 在行后面追加文本,支持使用\n实现多行追加
# sed '/^UUID/a \hello' /etc/fstab 在fstab中UUID行后面添加hello
i \text: 在行前面插入文本,支持使用\n实现多行插入
# sed '/^UUID/i \hello' /etc/fstab 在fstab中UUID行前面插入hello
c \text: 替换行为单行或多行文本
# sed '/^UUID/c \uuid' /etc/fstab 把fstab中UUID改为小写
w /path/to/somefile: 保存模式空间匹配到的行至指定文件中
# sed '/^UUID/w /etc/issue' /etc/fstab 读取fstab中符合UUID的行存放到issue中
r /path/from/somefile:读取指定文件的文本流至模式空间中匹配到的行的行后
# sed '6r /etc/issue' /etc/fstab 读取issue中的内容放到fstab中的第六行行后
=: 为模式空间中的行打印行号
!: 取反条件
s///: 支持使用其他分隔符,s@@@,s###
替换标记
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE: 将替换成功的结果保存至指定文件中
# sed 's@^UUID@uuid@' /tmp/fstab UUID替换为小写 练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符
# sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf
练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
# sed 's@^#[[:space:]]\+@@' /etc/fstab
练习3:echo一个绝对路径给sed命令,取出其基名,取出其目录名
# echo "/etc/home/dir/base.name/" | sed 's@[^/]\+/\?$@@' 高级编辑命令
h: 模式空间中的内容覆盖至保持空间中
H: 模式空间中的内容追加至保持空间中
g: 保持空间中的内容覆盖至模式空间
G: 保持空间中的内容追加至模式空间
n: 读取匹配到的行的下一行覆盖至模式空间中
N: 读取匹配到的行的下一行追加至模式空间中
d: 删除模式空间中的行
D: 删除多行模式空间中的所有行
x: 把模式空间中的内容与保持空间中的内容互换 举例:
sed -n 'n;p' FILE:显示偶数行
sed '1!G;h;$!d' FILE: 逆向显示文件内容
sed '$!N;$!D' FILE:取出文件后两行
sed '$!d' FILE: 取出文件最后一行
sed 'G' FILE: 每行下面添加一个空白行
sed '/^$/d;G' FILE 多个空白行合并成一个
sed 'n;d' FILE: 显示奇数行
sed -n '1!G;h;$p' FILE:逆向显示文件中的每一行

linux基础之sed的更多相关文章

  1. Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc

    Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...

  2. 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed

    笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...

  3. Linux echo, sort, sed 等一些命令总结

    linux echo, sort, sed是初学linux shell script 的一些常用的命令.基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本.以下是我遇到的以下常用 ...

  4. Linux基础入门

    第一节,linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 (一).Linux 为何物 ...

  5. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  6. ###Linux基础 - 2

    点击查看Evernote原文. #@author: gr #@date: 2014-10-13 #@email: forgerui@gmail.com 一.Linux基础命令2 mount: 挂载U盘 ...

  7. Linux 基础(5)

    Linux 基础 (五) 一.shell相关知识 shell一般代表两个层面的意思,一个是命令解释器,比如BASH,另外一个就是shell脚本.通过解释器的角度来理解shel 命令分为: ==> ...

  8. Linux基础 - 系统优化及常用命令

    目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...

  9. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

随机推荐

  1. 1 主机WiFi连接下与虚拟机通信问题

    环境: 主机:win10系统 虚拟机软件:VMware 虚拟机:winserver 2012 R2 datacenter (数据中心版) 网络上有很多方法说设置NAT模式,并不好用,主机如果用网线连接 ...

  2. Spring boot Mybatis 整合(完整版)

    个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...

  3. 用ASPOSE.Cells将HTML表格存为Excel

    前端生成的html表格经常需要导出到excel中,利用JS和Office控件可以做到,但仅限于IE,还要启用安全设置. 想找一个简单的办法将HTML内容直接转换成Excel文件,如果直接修改网页头信息 ...

  4. 2018-2019-2 20175320实验一《Java开发环境的熟悉》实验报告

    2018-2019-2 20175320实验一<Java开发环境的熟悉>实验报告 一.实验步骤及内容 (一)带包程序的编译运行 1.使用mkdir命令创建如图所示目录 2.进入exp1下的 ...

  5. redis分布式锁的具体应用

    1.关于redis分布式锁,有个setIfAbsent: 即如果没有设置,会添加分布式锁,并返回true; 2.redis分布式锁有个轮询过程: / * @param key redis键 * @pa ...

  6. odoo中self的使用

    一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr. ...

  7. 【JVM】-NO.110.JVM.1 -【hsdis jitwatch 生成查看汇编代码】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  8. POJ 3080 Blue Jeans(Java暴力)

    Blue Jeans [题目链接]Blue Jeans [题目类型]Java暴力 &题意: 就是求k个长度为60的字符串的最长连续公共子串,2<=k<=10 规定: 1. 最长公共 ...

  9. mysql----------mysql5.7.11导入sql文件时报错This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

    1.导入sql文件出现如下错误. [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in ...

  10. C#:进程

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...