惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
Cloudbric
Cloudbric
N
News and Events Feed by Topic
S
Secure Thoughts
Vercel News
Vercel News
S
Security @ Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - 聂微东
WordPress大学
WordPress大学
Google Online Security Blog
Google Online Security Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
PCI Perspectives
PCI Perspectives
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
Apple Machine Learning Research
Apple Machine Learning Research
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threat Research - Cisco Blogs
博客园 - 司徒正美
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
V
V2EX
I
Intezer
H
Hacker News: Front Page
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
Lohrmann on Cybersecurity
F
Fortinet All Blogs
Schneier on Security
Schneier on Security
博客园 - 叶小钗
The Cloudflare Blog
月光博客
月光博客
W
WeLiveSecurity
T
Tenable Blog
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
Help Net Security
Help Net Security
L
LangChain Blog
C
CERT Recently Published Vulnerability Notes
T
The Exploit Database - CXSecurity.com
美团技术团队
B
Blog

博客园 - 想飞

区块链应用场景 系统微服务架构 项目pom.xml第一行报错解决方案 Fabric事务机制 MSP成员服务管理 Dockerfile 说明 Docker-Compose 配置详解 Fabric 术语 Docker数据管理:Named volume Mac 查看Volumes Android中的JSON详细总结 经典黑客程序gh0st汇编改写 关于使用WM_COPYDATA进行进程之间交换数据的问题 关于金山开源界面BkWin不能使用DDX 的解决办法 CListBox没产生LBN_SELCHANGE消息 使用#define定义引用的编译问题 WTL中CListViewCtrl中LVS_ICON和LVS_REPORT模式的不同 浏览器研究 图片合并工具V1.1
shell sed命令
想飞 · 2018-07-13 · via 博客园 - 想飞

Posted on 2018-07-13 21:31  想飞  阅读(197)  评论()    收藏  举报

Sed简介

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。

-i选项:直接作用源文件,源文件将被修改。

sed命令和选项:

a\在当前行后添加一行或多行
c\用新文本替换当前行中的文本
d删除行
i\在当前行之前插入文本
h把模式空间的内容复制到暂存缓冲区
H把模式空间的内容添加到缓冲区
g取出暂存缓冲区的内容,将其复制到模式缓冲区
G取出暂存缓冲区的内容,将其追加到模式缓冲区
l列出非打印字符
p打印行
n读入下一行输入,并从下一条而不是第一条命令对其处理
q结束或退出sed
r从文件中读取输入行
!对所选行以外的行应用所有命令
s用一个字符串替换另外一个字符串

替换标志:

g在行内进行全局替换
p打印行
w将行写入文件
x交换暂存缓冲区和模式空间的内容
y将字符转换成另外一个字符

sed例子:

打印:p命令

sed ‘/abc/p’ file

打印file中包含abc的行。默认情况sed把所有行都打印到屏幕,如果某行匹配到模式,则把该行另外再打印一遍

sed  -n ‘/abc/p’ file和上面一样,只是去掉了sed的默认行为,只会打印匹配的行

删除:d命令

sed ‘3,$d’ file   删除从第3行到最后一行的内容。
sed ‘$d’ file删除最后一行的内容
sed ‘/abc/d’删除包含abc的行。
sed ‘3d’ file删除第三行的内容

替换:s命令

sed  ‘s/abc/def/g’ file把行内的所有abc替换成def,如果没有g,则只替换行内的第一个abc
sed  -n ‘s/abc/def/p’ file只打印发生替换的那些行
sed  ‘s/abc/&def/’ file在所有的abc后面添加def(&表示匹配的内容)
sed  -n ‘s/abc/def/gp’ file把所有的abc替换成def,并打印发生替换的那些行
sed  ‘s#abc#def#g’ file把所有的abc替换成def,跟在替换s后面的字符就是查找串和 
替换串之间的分割字符,本例中试#

指定行的范围:逗号

sed  -n ‘/abc/,/def/p’ file打印模式abc到def的行
sed  -n ‘5/,/def/p’ file打印从第五行到包含def行之间的行。
sed /abd/,/def/s/aaa/bbb/g修改从模式abc到模式def之间的行,把aaa替换成def

多重编辑-e

sed  -e ‘1,3d’ -e ‘s/abc/def/g’ file删除1-3行,然后把其余行的abc替换成def

读文件:r命令

sed  ‘/abc/r newfile’ file在包含abc的行后读入newfile的内容

写文件:w命令  

sed  ‘/abc/w newfile’ file在包含abc的行写入newfile

追加:a命令     

sed  ‘/abc/a\def’ file在包含abc的行后新起一行,写入def

插入:i命令     

sed  ‘/abc/i\def’ file在包含abc的行前新起一行,写入def

修改:c命令   

sed  ‘/abc/c\def’ file在包含abc的行替换成def,旧文本被覆盖

读取下一行:n命令  

sed  ‘/abc/{n ; s/aaa/bbb/g;}’ file读取包含abc的行的下一行,替换aaa为bbb

转换:y命令       

sed  ‘y/abc/ABC’ file将a替换成A,b替换成B,c替换成C(正则表达式元字符不起作用)

退出:q命令   

sed  ‘/abc/{ s/aaa/bbb/ ;q; }’ file在某行包含了abc,把aaa替换成bbb,然后退出sed。

暂存和取用:h命令(把模式行存储到暂存缓冲区)和g(取出暂存缓冲区的行并覆盖模式缓冲区)G(取出临时缓冲区的行)命令 

h和g是复制行为(覆盖),H和G表示追加。    

sed  -e ‘/abc/h’  -e ‘$G’ file包含abc的行通过h命令保存到暂存缓冲区,在第二条命令汇中,sed读到最后一行$时,G命令从暂存缓冲区中读取一行,追加到模式缓冲区的后面。即所有包含abc的行的最后一行被复制到文件末尾。
sed -e ‘/abc/{h; d;}’ 
      -e  ‘/def/{g; }’ file
包含abc的行会移到包含def的行上,并进行覆盖。

暂存和互换:h和x命令    

sed  -e ‘/abc/h’  
-e ‘/def/x’ file
包含abc的行会被换成def的行。