a(a\或者a\\):在当前行后面加入一行文本
sed '/^test/a---->this is a example2' example 
在test开头的行下,添加一行新的文本“---->this is a example2”

d 删除
D 删除模板的第一行
i 在当前行上面插入文本
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写)
q 退出Sed。
r file:从file中读行。
t label:if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label:错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file:写并追加模板块到file末尾。
W file:写并追加模板块的第一行到file末尾。

替换标记
g表示行内全面替换。
p表示打印行。
w表示把行写入一个文件。
x表示互换模板块中的文本和缓冲区中的文本。
y表示把一个字符翻译为另外的字符(但是不用于正则表达式)

元字符集
^ 锚定行的开始 如:/^sed/匹配所有以sed开头的行。 
$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行。 
. 匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。 
* 匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 
[]匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。 
[^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。 
\(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。 
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。 
\< 锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。 
\> 锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。 
x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。 
x\{m,\} 重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。 
x\{m,n\} 重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行

d 删除第二行到末行:sed '2,$d' example
s 替换以192.168.0.1开头的行为192.168.0.1localhost:sed 's/^192.168.0.1/&localhost/' example
逗号 选定行范围,选定处于test和check行之间的行,并将结尾替换成sed test:sed '/test/,/check/s/$/sed test/' example
e 多步编辑,先删除1到5行,在替换test为check:sed -e '1,5d' -e 's/test/check/' example
r 从文件读入,注意读入的文件后面没有斜杠: sed '/test/r file2' example(如果example里有匹配test的行,则将读入的file2写在匹配行的下面。如果有多行匹配,则全部附加一遍)
w 写入文件 sed -n '/test/w file3' example(如果example里有匹配test的行,则将匹配到的行写入file3文件里。不匹配的行不写入。)
a 追加内容 sed '/^test/a\--->this is a example' example(将内容追加到匹配的行的下一行位置)
i 插入内容 sed '/test/i\new line-------------------------' example(将内容插入到匹配的行的上一行位置)

什么时候把这句看懂了基本上就不是sed命令菜鸟了:sed 's/^\([^:]*\):\(*\) \([* ]*\)/\1:\3, \2/' < example2 > example

留下参考:

#!/bin/sh
u1=/tmp/user.$$
p1=/tmp/person.$$
o1=/tmp/office.$$
t1=/tmp/telephone.$$

trap "exit 1"
trap "rm -f $p1 $o1 $t1 $u1" exit

awk -F: '{ print $1 ":" $5 }' > $u1

sed -e 's=/.*==' \
    -e 's=^\([^:]*\):\(.*\) \([^ ]*\)=\1:\3, \2=' < $u1 | sort > $p1
sed -e 's=^\([^:]*\):[^/]*/\(^/*\)/.*$=\1:\2=' < $u1 | sort > $o1
sed -e 's=^\([^:]*\):[^/]*/[^/]*/\([^/]*\)=\1:\2=' < $u1 |sort > $t1

join -t: $p1 $o1 | 
    join -t: - $t1 | 
        cut -d: -f 2- | 
           sort -t: -k1,1 -k2,2 -k3,3 | 
               awk -F: '{ printf("%-39s\t%s\t%s\n", $1, $2, $3) }'

linux命令三剑客之一sed的更多相关文章

  1. 005 Linux 命令三剑客之-sed

    grep:数据查找定位 awk:数据切片,数据格式化,功能最复杂 sed:数据修改 01 Linux 命令三剑客? 三剑客各有所长,和锅锅一一搞起就是了! sed:擅长数据修改. grep:擅长数据查 ...

  2. 007 Linux 命令三剑客之-awk

    01 一起来认识 awk! Linux 命令三剑客,sed.grep.awk. sed:擅长数据修改. grep:擅长数据查找定位. awk:擅长数据切片,数据格式化,功能最复杂. awk 更适合格式 ...

  3. 常用文本处理命令 & 三剑客之 sed

    今日内容 文本处理命令 Linux 三剑客之 sed 内容详细 文本处理命令 1.sort : 文件内容排序 默认按照文件隔行内容的第一个字符大小进行排序(默认是升序) 默认输出文本结果 sort [ ...

  4. Linux 文本三剑客之 sed

    Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ...

  5. Linux命令学习-sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  6. linux命令详解——sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为:          se ...

  7. 001 研发同学必学哪些 Linux 命令?

    01 研发同学为啥要掌握 Linux 命令? 身为研发同学,Linux 是绕不过去的一个小山包,不是说要掌握的十分精通,在程序员界里做个极客,也不是说要抢了 Devops 同学的饭碗,但至少要做到摆脱 ...

  8. 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed

    目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...

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

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

随机推荐

  1. Caravel–一款开源OLAP+数据可视化分析前端工具,支持Druid和Kylin

    参考此文:http://lxw1234.com/archives/2016/06/681.htm

  2. ssm框架搭建的基本配置(一站式教会你搭建)

    首先是需要的jar包: <dependency> <groupId>org.springframework</groupId> <artifactId> ...

  3. Spring boot 配置https 实现java通过https接口访问

    近来公司需要搭建一个https的服务器来调试接口(服务器用的spring boot框架),刚开始接触就是一顿百度,最后发现互联网认可的https安全链接的证书需要去CA认证机构申请,由于是调试阶段就采 ...

  4. oracle 事务 与 提交

    Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...

  5. 在java中实现数据导入excel表格中

    1.首先前端代码如下: 一个导出按钮:<input id="export" class="btn btn-primary" type="butt ...

  6. node离线版安装

    1.下载 下载地址:https://nodejs.org/zh-cn/download/ 选择相应的版本下载 2.解压缩 将文件解压到要安装的位置,并新建两个目录 node-global :npm全局 ...

  7. sdoi2018旧试题 证明

  8. Vue 组件&组件之间的通信 父子组件的通信

    在Vue的组件内也可以定义组件,这种关系成为父子组件的关系: 如果在一个Vue实例中定义了component-a,然后在component-a中定义了component-b,那他们的关系就是: Vue ...

  9. jenkins 构建nodejs-pipeline流水风格的任务

    Step3 上图代码如下 node("master"){ //warp([$class:'BuildUser']) {BUILD_USER = BUILD_USER} GIT_NA ...

  10. 动态令牌验证遇到的问题(判断用户长按backspace键)

    因为最近负责泰康项目的前端工作,他们的登录需要进行安全验证,也就是所谓的双因素验证,即在OA平台登录过后,还需要安全部门发送安全令牌进行验证.令牌验证效果如下: 主要功能有:1.默认第一项focus. ...