linux之sed基础命令详解
sed (Stream EDitor)是一个强大的字符流编辑器,输入一般是来自文件,默认情况下不编辑原文件,仅对模式空间中的数据作处理;而后,将模式空间打印到屏幕显示
sed基础用法
sed [options]'AddressCommond' file ...
[options]
-n:静默模式,不再默认显示模式空间的内容
-i:直接修改原文件
-f:指定需执行的脚本文件,一般在脚本文件里编辑匹配模式
-e:SCRIPT -e SCRIPT :可以同时执行多个脚本
-r:表示使用拓展正则表达式
Address
1. startline,endline
1,100
2./RegExp/
/^root/
3./pattern1/,/pattern2/
表示第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,中间的所有行。
4.LineNumber
表示指定的行
$:表示最后一行 $-1:表示倒数第二行
5.Startline, +N
从Startline开始,向后的N行,共N+1行
Command:
d: 删除指定的行
sed '1,2d' /mnt/passwd
sed '4,$-1d' /mnt/passwd
sed '/nologin/d' /mnt/passwd
sed '1,+3d' /mnt/passwd
p:显示符合条件的行
sed '/^\//p' /mnt/passwd
a:\"string":在指定的行后面追加新行,内容为“string”
sed '2a\hello linux' /mnt/passwd
c:\'string' :用新文本替换指定行文本
sed '1c\redhat' /mnt/passwd
i:\string :在指定的行前面添加新行,内容为"string"
sed '2i\hello linux' /mnt/passwd
r:FILE:将指定的文件添加至符合条件的行处
sed '1,2r /etc/group' /mnt/passwd
sed '$r /mnt/tuantuan.sh' /mnt/yy.sh >> /mnt/kiosk.sh (合并文件)
w:将指定范围内的内容另存至指定的文件中
sed '/nologin/w /mnt/123' /mnt/passwd
s:查找并替换,默认只替换每行中第一次被匹配到的字符串
s/pattern/string/修饰符
sed 's/nologin/NOLOGIN/' /mnt/passwd
sed 's/^\//#/' /mnt/kiosk.sh
sed -r 's/^[[:space:]]+//' /mnt/passwd ##删除行首的空白符
sed 's/\(wer:\)[0-9]\(:gtrh\)/\17\2/g' /mnt/456 ##将wei:3:gtrh行中数字替换成7
sed 's/^#+//g' /mnt/yy.sh ##删除/mnt/yy.sh文件中开头的#号
sed -r 's/^#[[:space:]]+//g' ##删除开头的#号及后面的空白字符
sed -r 's/^[[:space:]]+#+//g' ##删除以空白字符后跟#号的空白字符及#号
g:全局变量
i:忽略字符大小写
sed 's/b..h/&r/g' /mnt/passwd
sed 's/\(b..h\)/\1r/g' /mnt/passwd
sed 's/b\(..h\)/B\1/g' /mnt/passwd
s/// 格式也可用 s###、s@@@
代替
最新文章
- linux文件目录结构
- Js~(function(){})匿名自执行方法的作用
- 【Win10】让 AppBarButton 支持更复杂的 Icon 内容
- CoffeeScript及相关文本标记语言
- angular的GitHub Repository Directive Example学习
- __HTML_5读取文件API
- 转:jQuery Ajax 实例 全解析
- 配置FTP服务
- 基于特定值来推断隐藏显示元素的jQuery插件
- ubuntu下安装java和eclipse
- Java中间MD5加密算法完整版
- 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等
- Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
- Java〜slf4日志框架的使用
- 【Python 07】汇率兑换1.0-2(基本元素)
- HoloLens开发手记-全息Hologram
- Spark机器学习(9):FPGrowth算法
- Onsen UI for React文档
- firefox插件卸载
- oracle数据据 Python+Pandas 获取Oracle数据库并加入DataFrame
热门文章
- HTTP(一)
- 贴现力 (force of discount)
- 【设计模式最终总结】桥接模式 VS 外观模式
- 为什么说 Java 程序员必须掌握 Spring Boot ?
- C#图解教程读书笔记(第2章 C#编程概述)
- JSTL1.2学习总结
- bzoj1818 [Cqoi2010]内部白点
- JS中confirm弹出框
- 关于PHP数组你应该知道的事情
- Codeforces Round #535 (Div. 3) E2. Array and Segments (Hard version) 【区间更新 线段树】