sed:数据流编辑器; awk:报告文本的生成器

sed 基本用法:(Stream EDitor) Stream 流 EDitor 编辑器
行编辑器
全屏编辑器:vi/vim
sed:内存空间(模式空间)
默认不编辑源文件,仅对模式空间中的数据作处理,处理结束后,将模式空间打印到屏幕

sed [options] 'AddressCommannd' file ...
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改源文件
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f file: sed -f file filetest.txt 脚本文件处理源文件
-r: 表示使用扩展正则表达式
history | sed 's/^[[:space:]]*//g' | cut -d' ' -f1

Address:
1. StartLine,EndLine e.g: 1,100
2. /RegExp/ 正则表达式 e.g:/^root/
3. /Pattern1/,/Pattern2/ Pattern 模式
第一次被Pattern1匹配到的行开始,到第一次被Pattern2匹配到的行结束,这中间的所有行
4. LineNumber;指定行
$:倒数第一行
$-1:倒数第二行
5. StartLine,+N 从指定行开始向后N行

Command:
d:删除符合条件的行 e.g: sed '1,2d' /etc/fstab
sed '/oot/d' /etc/fstab
sed '1,+2d' /etc/fstab
p:显示符合条件的行 e.g: sed -n '/^\//p' /etc/fstab
a \string:在指定的行后面追加新行,内容为string e.g: sed '/^\//a \#Hello World!' /etc/fstab
i \string:在指定的行前面添加新行,内容为string e.g: sed '/^\//i \#Oh,my god!' /etc/fstab
r FILE:将指定的文件内容添加到符合条件的行处 e.g: sed '2r /etc/issue' /etc/fstab
w FILE:将地址指定的范围内的行另存至指定的文件中 e.g: sed '/oot/w /tmp/oot.txt' /etc/fstab
s/Pattern/String/:查找并替换,默认只替换每行中第
一次被匹配到的字符串加修饰符 e.g: sed 's/oot/OOT/' /etc/fstab
g:全局替换 e.g: sed 's/oot/OOT/g' /etc/fstab
i:忽略字符大小写
s///:s###:s@@@ e.g: sed 's@/@#@g' /etc/fstab
&:引用模式匹配到的整个串 e.g: sed 's#..t#&er#g' /etc/fstab
e.g: sed 's#\(.\)oo\(.\)#\1OO\2#g' /etc/fstab
练习:
1、删除/etc/grub.conf文件中行首的空白字符;
sed -r 's/^[[:space:]]*//g' /etc/grub.conf

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字5;
sed 's/\(id:\)[0-9]\(:initdefault:\)/\15\2/g' /etc/inittab

3、删除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab

4、删除/etc/inittab文件中开头的#号;
sed 's/^#//g' /etc/inittab

5、删除某文件中开头的#号,但要求#号后面必须有空白字符;
sed -r 's/^#[[:space:]]*//g' /etc/inittab

6、删除某文件中以空白字符后跟#号开头的开头的空白字符及#号
sed -r 's/^[[:space:]]*#//g' /etc/inittab

7、取出一个文件路径的目录名称
echo "/etc/rc.d" | sed -r 's@^(/.*/)[^/]+/?@\1@g'

最新文章

  1. mysql5.1升级到mysql5.6
  2. Nginx启动报错: could not open error log file: open() &q
  3. js 调整排序
  4. Java学习笔记(十五)——javadoc学习笔记和可能的注意细节
  5. Java网络编程(TCP服务端)
  6. 转载 yii2-按需加载并管理CSS样式/JS脚本
  7. The Unified Modeling Language(UML)
  8. 14.6.7?Limits on InnoDB Tables InnoDB 表的限制
  9. Android-它们的定义Notification
  10. C++ CRTP singleton
  11. iptables nat及端口映射
  12. vue的父子组建之间的通信(-),基于props和$emit之间的传递
  13. 压力测试Apache
  14. webbench安装使用
  15. 考研结束,重返python
  16. hdu5493 树状数组+二分
  17. mongo 复制集命令
  18. mybatis四大接口之 ParameterHandler
  19. win10完美去除小箭头
  20. MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序

热门文章

  1. Window下mysql环境配置问题整理
  2. mongodump备份小量分片集群数据
  3. Muduo学习笔记(一) 什么都不做的EventLoop
  4. 01-docker简介
  5. CSAPP lab2 二进制拆弹 binary bombs phase_1
  6. ejabberd与XMPP
  7. 使用jmeter 上传文件
  8. php内置函数分析之str_pad()
  9. c++中冒号(:)和双冒号(::)的用法
  10. NodeList & null