sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑
sed 适用于以下三种场合:
编辑相对交互式文本编辑器而言太大的文件
编辑命令太复杂,在交互式文本编辑器中难以输入的情况
对文本扫描一遍,但是需要执行多个编辑函数的情况
sed只对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,因此如果需要保存改动的内容,需要将输出重定向到另一个文件

sed命令选项及其意义
-n --不打印所有的行到标准输出
-e --表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e可以省略
-f --表示正在调用sed脚本文件

sed命令定位文本的方法
x --x为指定行号
x,y --指定从x到y的行号范围
/pattern/ --查询包含模式的行
/pattern/pattern/ --查询包含两个模式的行
/pattern/,x --从与pattern的匹配行到x号行之间的行
x,/pattern/ --从x号行到与pattern的匹配行之间的行
x,y! --查询不包括x和y行号的行
 
sed编辑命令
p --打印匹配行
= --打印文件行号
a\ --在定位行号之后追加文本信息
i\ --在定位行号之前插入文本信息
d --删除定位行
c\ --用新文本替换定位文本
s --使用替换模式替换相应模式
r --从另一个文件中读文本
w --将文本写入到一个文件
y --变换字符
q --第一个模式匹配完成后退出
l --显示与八进制ASCII码等价的控制字符
{} --在定位行执行命令组
n --读取下一个输入行,用下一个命令处理新的行
h --将模式缓冲区的文本复制到保持缓冲区
H --将模式缓冲区的文本追加到保持缓冲区
x --互换模式缓冲区和保持缓冲区的内容
g --将保持缓冲区的文本复制到模式缓冲区
G --将保持缓冲区的文本追加到模式缓冲区

sed命令选项的一组例子:
将第一行内容打印出来
sed -n '1p' dwa_m_excel_dura_aggr_prop.log
将第一行取出来,并重定向到dim_ia_test.log文件中
sed -n '1p' dwa_m_excel_dura_aggr_prop.log > dim_ia_test.log
将第3~6行内容打印出来
sed -n '3,6p' dwa_m_excel_dura_aggr_prop.log
将包含application的行打印出来(这里大小写是敏感的)
sed -n '/application/p' dwa_m_excel_dura_aggr_prop.log
将包含application的行号打印出来(这里大小写是敏感的)
sed -n '/application/=' dwa_m_excel_dura_aggr_prop.log
将包含application的行号和行内容打印出来(这里大小写是敏感的),当多个编辑命令同时实现时,加-e
sed -n -e '/application/=' -e '/application/p'  dwa_m_excel_dura_aggr_prop.log
sed追加文本,在instead.后面追加we append a new line.内容
sed '/instead./a\we append a new line.' dim_ia_test.log

sed追加文本,使用-f : cat append.sed

#!/bin/sed -f
#instead.为要查找的内容,a\表示此处换行添加文本
/instead./a\
we append a new line.\
we append another line.

 为脚本赋可执行权限 chmod u+x append.sed

运行脚本:

./append.sed dim_ia_test.log

在a\为在定位行号之后插入文本信息

运行结果为:

sed文本定位的一组例子

将含有.的行打印出来,'.'为元字符,需要转义
sed -n '/\./p' dim_ia_test.log
将最后一行打印出来
sed -n '$p' dim_ia_test.log   
等价
sed -n '$'p dim_ia_test.log
将以ing结尾的行打印出来
sed -n '/.*ing/p' dim_ia_test.log
2~10行不打印,其他行打印出来
sed -n '2,10!p' dim_ia_test.log  
将含有HIVE_CONF_DIR的行到最后一行的行内容打印出来
sed -n '/HIVE_CONF_DIR/,$p' dim_ia_test.log
将第三行到含有HIVE_CONF_DIR的行的内容打印出来
sed -n '3,/HIVE_CONF_DIR/p' dim_ia_test.log

sed基本编辑命令的一组例子

一、sed插入文本,使用i\

cat insert.sed

#!/bin/sed -f
/instead./i\
We insert a new line.

为脚本赋可执行权限 chmod u+x insert.sed

运行该脚本

./insert.sed dim_ia_test.log

  

在i\为在定位行号之前插入文本信息

二、sed修改文本用c\

cat modify.sed

#!/bin/sed -f
/instead./c\
We modify this line.

为脚本赋可执行权限 chmod u+x modify.sed

运行该脚本:

./modify.sed dim_ia_test.log

运行结果:

三、sed删除文本,不区分大小写

cat delete.sed

#!/bin/sed -f
/[Ii][Nn][Ss][Tt][Ee][Aa][Dd]/d

脚本赋可执行权限 chmod u+x delete.sed  

运行该脚本:

运行结果将instead所在的行删除;

删除第一行文本
sed '1d' dim_ia_test.log
删除最后一行文本
sed '$d' dim_ia_test.log
删除第一行到第十行的内容
sed '1,10d' dim_ia_test.log 
删除第5行到最后一行的内容
sed '5,$d' dim_ia_test.log   
替换文本
g --表示替换文本中所有出现被替换字符串之处
p --与-n选项结合,只打印替换行
w 文件 --表示将输出定向到一个文件
将instead替换为xxxxx,并打印全部
sed 's/instead/xxxxx/' dim_ia_test.log
只打印替换的行(此时已替换)
sed -n 's/instead/xxxxx/p' dim_ia_test.log
替换所有出现被替换的字符串
sed -n 's/number/xxxxx/pg' dim_ia_test.log 
将只打印的替换行写入output文件
sed -n 's/number/xxxxx/w output' dim_ia_test.log
将文件中出现的number用()括起来,并打印
sed -n 's/number/(&)/pg' dim_ia_test.log
等价
sed -n 's/number/(number)/pg' dim_ia_test.log
写入一个新文件
将1~5行写入output文件中
sed -n '1,5 w output' dim_ia_test.log     
将含有number关键字的行写入output文件中
sed -n '/number/w output' dim_ia_test.log
查找含有instead的行,将output文件的内容插入到instead行下面
sed  '/instead/r output' dim_ia_test.log 
退出命令
打印前5行,然后退出
sed  '5 q' dim_ia_test.log 
打印从第一行到含有number的行,并退出
sed  '/number/q' dim_ia_test.log

在定位行执行命令组
将含有number的行内容和行号打印出来
sed -n '/number/{p;=}' dim_ia_test.log

sed命令基本用法的更多相关文章

  1. linux下shell脚本中sed命令的用法

    先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...

  2. Linux之sed命令常见用法

    1. sed(stream editor),流编辑器 linux中,主要中sed命令实现对文件的增删改替换查 名称 sed - 用于过滤和转换文本的流编辑器 SYNOPSIS sed [选项]... ...

  3. linux sed 命令的用法

    原文  http://blog.chinaunix.net/uid-24426415-id-77244.html ------------------------------------------- ...

  4. sed命令常见用法

    sed -n 'num1p' file 选出行号为num1的行sed -n 'num1,num2p' file 选出num1~num2行sed -n 'num1,$p' file 选出num1行到文件 ...

  5. sed命令常用用法

    1.字符串替换 sed -i "s/xxx/yyy/g" /home/test.log // 将home目录下的test.txt文件中的所有xxx字符串替换成yyy字符串 sed ...

  6. 10 sed命令的基本用法

    grep灵活的关联正则表达式实现文件过滤,而sed是一个数据流的编辑器,或者说是一个行编辑器,它将文件一行一行的数据放入到内存中进行编辑,而awk是一个报告生成器,这个我们以后再说: 之前我们介绍过g ...

  7. <三剑客> 老二:sed命令用法

    sed命令的用法: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ...

  8. 第4章 sed命令

    1 sed命令基本用法 sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑: sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择 ...

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

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

随机推荐

  1. Python3.7 - Argparse模块的用法

    argparse 是一个命令行参数解析模块. argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离 ...

  2. @Import导入自定义选择器

    @Import导入自定义选择器 之前一篇博文:Spring中的@Import注解已经详细介绍了@Import注解,不赘述. 需求描述 通过@import注解自定义组件选择器,将满足我们自定义的规则的b ...

  3. linux中用一个.sh文件执行多个.sh文件

      建一个文件夹存放你自己的.sh文件(用命令行操作) 先进入到: cd usr/local/sbin 目录里面 然后再新建一个文件夹: sudo mkdir myshell 建一个文件夹专门存放自己 ...

  4. Java里 equals 和 == 以及 hashcode

    本文探讨的是老掉牙的基础问题,先建个实体类 package com.demo.tools; public class User { private String name; public User(S ...

  5. Linux 常用文件描述

    Linux 常用文件描述 /etc/issue 本地登陆显示的信息,本地登录前 /etc/issue.net 网络登陆显示的信息,登录后显示,需要由sshd配置 /etc/motd 常用于通告信息,如 ...

  6. 重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29

    Kafka 的作者 Neha Narkhede 在 Confluent 上发表了一篇博文,介绍了Kafka 新引入的KSQL 引擎——一个基于流的SQL.推出KSQL 是为了降低流式处理的门槛,为处理 ...

  7. 服务器推送之SSE简单使用

    前端 <!DOCTYPE html> <html> <head> <meta name="viewport" content=" ...

  8. 运维利器1-supervisor

    supervisor用来管理进程服务很方便 优点: 1.重启方便,无抖动感 2.可以分组管理进程 3.加入系统自动启动后,可以开机自启,程序异常退出能自动启动 操作: 1.在python沙箱环境下操作 ...

  9. Android四大组件——Activity跳转动画、淡出淡入、滑出滑入、自定义退出进入

    Activity跳转动画.淡入淡出.滑入滑出.自定义退出进入 前言: 系统中有两个定义好的Activity跳转动画:fade_in.fade_out.slide_in_left.slide_out_r ...

  10. Linux命令:scp

    1.find命令: scp [参数] [原路径] [目标路径] 2.用法: scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的sc ...