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. Gym 101810

    友情提示: 这篇题解并没有GJKL,因为我也不会,而且看别人代码也看不懂,而且问学长还不给我讲!hmc:这个题巨麻烦,我只能说balabala.我不学了我退役了啊! A:这傻逼题我从开头wa了四个小时 ...

  2. react使用mobx

    mobx api 使用装饰器语法 mobx数据转化为js数据 安装 yarn add mobx mobx-react yarn add babel-preset-mobx --dev "pr ...

  3. mac homebrew

    brew 全称Homebrew  是Mac OSX上的软件包管理工具 Homebrew 安装和卸载工具 只用一行命令就能完成 官方地址:    http://brew.sh/index.html   ...

  4. SQL语句精简版

    select US.QQ,US.tel,US.username,SC.EnglishScore,SC.MathScorefrom Userinfor US right join Score SC on ...

  5. Java8 新特性之流式数据处理

    一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现.比如我们希望对一个包含整数的 ...

  6. day20:序列化模块,模块的导入

    1,什么是序列化--将原本的字典,列表等内容转换成一个字符串的过程就叫做序列化,字符串是有顺序的,序列化转向一个字符串的过程,我们平时说的序列,指的就是字符串. 2,为何要序列化?本来字符串是可以强转 ...

  7. python->读写excel

    from openpyxl import load_workbook#将一个excel文档中的数据存放内存中,即变量wb保存了该excel的所有信息wb = load_workbook(r" ...

  8. 网络对抗实验一 逆向及Bof基础实践

    网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...

  9. webpack介绍 安装 常用命令

    Webpack是一款用户打包前端模块的工具,它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑 ...

  10. RoR - Introduction to Active Record

    Active Record: ORM ( Object-relational Mapping)Bridges the gap between relational databases , which ...