(3)三剑客之sed
(1)基本介绍
1) 工作流程:
sed每次处理一行内容,处理时,把当前处理的行存储在临时缓存区,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,直到内容处理完毕
2)语法格式:
sed [options] 'command' file
选项:
-n : 取消默认的输出
-i :inplace,就地编辑
-r :支持扩展元字符
命令:
a :在当前行后添加一行或多行
c :用新文本修改(替换)当前行的文本
d :删除行
i :在当前行之前插入文本
s :用一个字符串替换另一个
s :替换标志
g :行内进行全局替换
i :忽略大小写
r :从文件中读
w :将行写入文件
支持基本正则表达式:^ $ . * [] m\{n\} [^] \< \> ()
支持扩展正则表达式:? + {} | ()
使用扩展正则表达式两种方式:\+ sed -r
(2)sed基本用法
1)打印 p
sed -r "" /etc/passwd
sed -r "p" /etc/passwd 打印两行
sed -rn "p" /etc/passwd 输出两行,使用-n取消默认输出
sed -rn "/root/p" /etc/passwd
2)删除行 d
sed -r "/root/d" /etc/passwd
sed -r "\#root#d" /etc/passwd
sed -r "1,3d" passwd #删除1到3行
sed -r '3,$d' passwd #从第三行到最后一行删除
sed -r "/root/,5d" passwd #匹配root行删到第5行
sed -r "/^root/,+5d" passwd #匹配root开头的行,下面在删除5行
3)替换字符 s
sed -r "s/root/jack" /etc/passwd 替换一行的前面一个,后面的不替换
sed -r "s/root/jack/g" /etc/passwd 单行匹配全部替换
sed -r "s/ROOT/jack/gi" /etc/passwd 忽略大小写
sed -r 's/(.*)/#&/g' passwd 向所有行前面添加#,&代表查找字符串中匹配到的内容
sed -r 's/(.)(.)(.*)/a\1b\2c\3/g' passwd \1 \2 \3分别引用前面的()
4)注意事项
# cat a.txt
/etc/abc/456
etc
sed -r "\#/etc/abc/456#d" a.txt #删除/etc/abc/456这一行,使用#好看一点,需要在\#
sed -r "s#/etc/abc/456#/etc/sda1#" a.txt
5)写文件:w
sed -r '/root/w /tmp/1.log' passwd 从passwd文件中匹配出root的行写入到/tmp/1.log文件中
sed -r '3,$w /tmp/1.log' passwd
6)追加内容:a
sed -r '2a\111111' /etc/hosts 在第二行后追加内容
7)插入内容:i
sed -r '2i\11111' /etc/hosts 在第二行插入内容
8)修改整行:c
sed -r '2c\11111' /etc/hosts 第二行内容修改为11111
9)反向: d
sed -r '3d' /etc/passwd
sed -r '3!d' /etc/passwd 删除除了第三行以外的内容
10)引用外部变量
var=1111
sed -r "3a$var" /etc/passwd 第三行追加变量的值
sed -r "\$a$var" /etc/passwd 最后一行追加变量的值
(3)常见例子
删除注释行及空行:
sed -ri '/^[ \t]*(#|$)/d' 1.log
sed -ri '/^[ \t]*#|^[ \t]*$/d' 1.log
sed -ri '/^[ \t]*$/d;/^[ \t]*#/d' 1.log
修改配置文件:
sed -ri '$a\127.0.0.1 localhost' /etc/hosts \\最后一行追加
sed -ri '/^SELINUX/cSELINUX=disabled' /etc/sysconfig/selinux
sed -ri '/UseDNS/cUseDNS=no' /etc/ssh/sshd_config
sed -ri '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config
给文件添加注释行:
sed -ri 's/^/#/' passwd
sed -ri 's/^(.*)/#\1/' passwd
sed -r 's/^.*/#&/' passwd &表示匹配前面查找的内容
(3)三剑客之sed的更多相关文章
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- shell编程系列13--文本处理三剑客之sed利用sed追加文件内容
shell编程系列13--文本处理三剑客之sed利用sed追加文件内容 追加用法总结: .a 在匹配行后面追加 .i 在匹配行前面追加 .r 将文件内容追加到匹配行后面 .w 将匹配行写入指定文件 追 ...
- shell编程系列12--文本处理三剑客之sed利用sed修改文件内容
shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...
- shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容
shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...
- shell编程系列10--文本处理三剑客之sed利用sed查询特定内容
shell编程系列10--文本处理三剑客之sed利用sed查询特定内容 利用sed查找文件内容: pattern种类: .8p .,10p .,+5p ./regexp/p .,/regexp/p . ...
- shell编程系列9--文本处理三剑客之sed概述及常见用法总结
shell编程系列9--文本处理三剑客之sed概述及常见用法总结 sed的工作模式:对文本的行数据一行行处理,如下图 sed(stream editor),是流编辑器,依据特定的匹配模式,对文本逐行匹 ...
- day14 linux三剑客之sed命令
day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...
- 文本处理的命令,三剑客之sed
文本处理的命令 1.sort命令 "用于将文件内容加以排序" 参数: -n :按照数值的大小排序 -r :以相反的顺序来排序 -k :以某列进行排序 -t :指定分隔符,默认是以空 ...
随机推荐
- 子组件通过$emit触发父组件的事件时,参数的传递
子组件.vue <template> <div> <el-table :data="comSchemaData" highlight-current- ...
- SpringBoot 入门学习(HelloWord)
前置知识 1.会利用 maven 构建项目 2.了解 Spring 注解 3.了解 RESTful API 的基本理论 4.SpringBoot 是 SpringMVC 的升级版,但两者没有必然的联系 ...
- ES mapping field修改过程
Elasticsearch 的坑爹事--记录一次mapping field修改过程 http://www.cnblogs.com/Creator/p/3722408.html Elasticsearc ...
- 【bzoj2287】[POJ Challenge]消失之物 背包dp
题目描述 ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. “要使用剩下的 N - 1 物品装满容积为 x 的背包,有几种方法呢? ...
- 安徽师大附中%你赛day5 T3 树上行走 解题报告
树上行走 题目背景 \(\mathrm{Smart}\) 的脑洞非常大, 经常幻想出一些奇怪的东西. 题目描述 某一天,\(\mathrm{Smart}\) 幻想出了一棵没有边际的二叉树,脑补着在那棵 ...
- dhcp 和ntpdate时间同步
为了防止路由器的dhcp服务干扰实验,我们2台机器分别新加了1快网卡. vmnet4 dhcp安装 [root@ygy130 ~]# yum -y install dhcp 将配置文件放在/etc/d ...
- git 的证书重新设置,以及如何让git 记住提交的用户名和密码
1.git 的证书的重新设置的命令是: git config --system --unset credential.helper 2.保存git的用户名和密码注意这里是全局保存 git config ...
- itext转html为pdf遇到的问题
记录一下使用itext将html文件转为pdf文件遇到的一些问题 1.中文不显示 原因:itext默认不支持中文 解决方法:引入中文字体 需要注意的是在java代码中设置好中文字体后,还需要在html ...
- 复选框 checkbox 选中事件
项目中用的jquery-1.11 今天需要检测一个checkbox的选中状态,想当然的用 .attr("checked") ,结果发现,无论是否选中,这个值都是 undefined ...
- lesson 4 再谈继承多态,抽象类和接口
再谈多态,抽象类和接口 上一次博客已经概念性的概述了继承多态,抽象类和接口,这次来具体的谈一谈他们之间的联系和需要注意的地方. 一.继承和多态:Inheritance (继承) & Polym ...