Linux基础命令---文本编辑sed
sed
sed是一种流编辑器,用来从输入流中读取内容并完成转换,输入流可以来自一个文件,也可以来自一个管道。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
sed [选项] file
2、选项列表
选项 |
说明 |
--version |
显示命令版本信息 |
--help |
显示帮助文档 |
-n | --quite | --slient |
静默模式 |
-e | --expression=script |
给指令添加脚本 |
-f | --file=script-file |
将文件内容作为脚本,追加给指令 |
--follow-symlinks |
处理到位时遵循符号链接;硬链接仍将被破坏。 |
-i[SUFFIX] | --in-place[=SUFFIX] |
编辑文件到位(如果提供了扩展名,则进行备份)。默认的操作模式是中断符号链接和硬链接。这可以通过跟随符号链接和复制来改变。 |
-c | --copy |
当在-i模式下对文件进行洗牌时,请使用复制而不是重命名。虽然这将避免断开链接(符号或硬链接),但结果的编辑操作并不是原子操作。这很少是想要的模式;-遵循符号链接通常就足够了,而且它更快、更安全。 |
-l | --line-length=N |
指定每一行最大字符数,超过就自动换行 |
--posix |
禁用所有的GNU表达式 |
-r | --regexp-extended |
在脚本中使用扩展正则表达式。 |
-s |
将文件看作是分离的,而不是单独连续的长字符串 |
-u | --unbuffered |
从输入文件中加载最少数量的数据,并更频繁地刷新输出缓冲区。 |
如果没有给出-e、--expression,、-f或-file选项,那么第一个非选项参数将作为sed脚本进行解释。其余的参数都是输入文件的名称;如果没有指定输入文件,则读取标准输入。
命令 |
说明 |
没有地址的命令 |
|
: label |
b和t命令的标签 |
#comment |
注释将扩展到下一行(或-e脚本片段的末尾)。 |
} |
{}块的结束括号 |
没有地址或者一个地址的命令 |
|
= |
打印当前的行号 |
a \ text |
追加文本,在换行符之前有一个嵌入的反斜杠 |
i \ text |
插入文本,在换行符之前有一个嵌入的反斜杠 |
q [exit-code] |
立即退出sed脚本,而不处理任何更多的输入,除非自动打印没有被禁用,当前的模式空间将被打印出来。退出代码参数是一个GNU扩展。 |
Q [exit-code] |
立即退出sed脚本,而不处理任何更多的输入。这是一个GNU扩展 |
r filename |
附加从文件中读取的文本。 |
R filename |
附加从文件读取的一行。命令的每次调用都从文件中读取一行。 |
接受地址范围的命令 |
|
{ |
开始一个命令块(以)结尾) |
b label |
分支到标签;如果省略标签,则分支到脚本的末尾。 |
t label |
如果“s///”自读取上一个输入行以来以及从最后一个t或T命令开始已成功地进行了替换,则从“分支到标签”;如果省略“标签”,则将其分支到脚本的末尾。 |
T label |
如果自读取上一个输入行以来,以及自最后一个t或T命令以来,没有“s///”已成功地进行了替换,则从“分支到标签”;如果省略“标签”,则从“分支到脚本的末尾”。这是一个GNU扩展。 |
c\ text |
用文本替换徐那种的行,在换行符之前有一个嵌入的反斜杠 |
d |
删除模式空间。开始下一个周期。 |
D |
删除模式空间中的第一个嵌入换行符。开始下一个周期,但如果模式空格中仍然有数据,则跳过从输入中读取。 |
h H |
复制/追加模式空间到保持空间 |
g G |
复制/追加保持空间到模式空间 |
x |
交换持有空格和模式空格的内容 |
l |
以“视觉清晰”的形式列出当前行。 |
l width |
以“视觉清晰”的形式列出当前行,在宽度width处将其拆分。这是一个GNU扩展。 |
n N |
在模式空间中读取/追加下一行输入 |
p |
打印到当前模式空间 |
P |
打印到当前模式空间的第一个嵌入换行符 |
s/regexp/replacement/ |
尝试将regexp与模式空间匹配。如果成功,则将该部分替换为替换部分。替换可以包含特殊字符&引用匹配的模式空间的那一部分,特殊转义\1到\9引用regexp中相应的匹配子表达式。 |
w filename |
将当前模式空间写入文件名 |
W filename |
将当前模式空间的第一行写入文件名。这是一个GNU扩展。 |
y/source/dest/ |
将在源中出现的模式空间中的字符音译为dst中相应的字符。 |
3、地址
SED命令可以在没有地址的情况下给出,在这种情况下,命令将对所有输入行执行;使用一个地址,则只对与该地址匹配的输入行执行该命令;或者使用两个地址,在这种情况下,将对所有与从第一个地址开始并继续到第二个地址的包含行范围匹配的输入行执行命令。关于地址范围,需要注意三件事:语法是addr 1,addr 2(即地址用逗号分隔);addr 1匹配的行将始终被接受,即使addr 2选择了前面的行;如果addr 2是regexp,则不会根据addr 1匹配的行对其进行测试。
在地址(或地址范围)之后,在命令之前,可以插入一个“!”,这指定只有当地址(或地址范围)不匹配时才执行命令。支持以下的地址类型“
number,只匹配指定的行号。
first~step,从指定的行first开始,每step行匹配一次。
$,匹配最后一行。
/regexp/,匹配正则表达式regexp的行。
\cregexpc,匹配正则表达式regexp的行。c可以是任何字符
0,addr2,从“匹配的第一个地址”状态开始,直到找到addr 2为止。这类似于1,addr 2,但如果addr 2匹配输入的第一行0,addr 2表单将位于其范围的末尾,而1,addr 2窗体仍将位于其范围的开头。这只在addr 2是正则表达式时才起作用。
addr1,+N,将匹配addr 1和addr 1后面的N行。
addr1,~N,将匹配addr 1和addr 1后面的行,直到输入行号为N的倍数的下一行为止。
4、实例
从一个文件读取内容输入到另一个文件
|
Linux基础命令---文本编辑sed的更多相关文章
- Linux基础命令---文本编辑ex
ex ex会启动vim编辑器,它的执行效果和vim –E相同.从ex模式回到普通模式,可以在vim中输入:vim. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.op ...
- Linux基础命令---文本编辑tee
tee 将标准输入的内容复制到指定的文件中,同时在标准输出中显示. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- linux基础命令之sed
什么是sed? sed是一个流编辑器,英文全名为stream editor,流的意思就是能处理文件或者通过管 道传输来的数据.主要针对行,也就是行编辑.默认是不编辑文件的,处理时,把当前 ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
- Linux基础命令小结(超全!!)
Linux目录结构 1.bin 存放经常使用的指令比如ll,cp 2.sbin 系统管理员使用的系统管理指令 3.home 存放普通用户的住目录 4.root 系统管理员的用户主目录 5.boot 存 ...
- 第四节,Linux基础命令
第四节,Linux基础命令 命令是系统操作员对系统传入的指令,传入指令后回车,系统接收到指令做出相应的行为 1.查看用户位于系统什么位置 [pmd]检查操作用户位于系统的什么位置 命令 ...
- 【Python之路】第一篇--Linux基础命令
pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 . 表示当前目录 .. 表示上级目录 / 表示根目录 ls ...
- linux基础命令学习笔记(二)
linux基础命令学习笔记(二) 1.kill :终止进程 kill pid (唯一标示一个进程) kill -9 强制终止 kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...
- 2.Linux基础命令
linux内一切皆文件,没有文件夹只有目录,目录也是一种文件 1.一些常用按键: 将鼠标的光标从虚拟机里切换回来:Ctrl+Alt 拖动Ubuntu内的对话框:Alt键+鼠标左键拖动 清屏:Ctrl+ ...
随机推荐
- kvo观察实例变量
// 手动设定KVO - (void)setAge:(NSString *)age { [self willChangeValueForKey:@"age"]; _age = ag ...
- [phomeflashpic]怎样调用帝国CMS图片幻灯效果
今天改网站时试着用帝国cms的[phomeflashpic]标签调用图片作为首页幻灯片,默认是[phomeflashpic]0,3,300,235,0,0,13,3[/phomeflashpic],其 ...
- 20170712 SQL Server 日志文件收索
-- 1 日志文件增长过快,未进行任务计划截断备份 造成文件过大199G 左右,而可用空间不足8% -- 2 日志备份之前,需要一次完整备份 再进行截断备份 出现可用空间99% 此时可以选择收索数据库 ...
- 005-优化web请求一-gzip压缩、http缓存控制和缓存校验[Pragma、Expires、Cache-Control、max-age、Last-Modified、用户刷新访问、避免过度304]
优化Web应用的典型技术:缓存控制头信息.Gzip.应用缓存.ETag.反应型技术[异步方法调用和WebSocket] 一.模板缓存 spring.thymeleaf.cache=true sprin ...
- python文件的md5加密方法
本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...
- 照葫芦画瓢之爬虫豆瓣top100
import requestsimport reimport jsonfrom requests.exceptions import RequestExceptiondef get(url): ...
- [vue]vue路由篇vue-router
spa单页开发及vue-router基础: https://www.cnblogs.com/iiiiiher/p/9034496.html url两种传参方式 query: $route.query ...
- syslog-ng内容讲解
一.基础syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能.系统自带版本: 引用 # rpm -qa|grep syslog-ngsys ...
- [Guitar self-learning] 基本乐理知识1. 度,升降记号#/b
度:是音程上面的单位, 指每两个音程(音名)之前的音距.(就像我们说身高时的cm一样, 用来表明当时的音高.) 升记号:# , 表明在当前的音高下, 升半个音高. 如 #3 == 4 降记号: ...
- Ubuntu下安装eclipse遇到的问题
今天在Ubuntu中安装eclipse时遇到如下问题: 解决方法: 打开eclipse安装目录下eclipse.ini文件 在文件最开头(注:一定是最开头)加上如下语句(-startup前面两行),第 ...