Linux sed 命令使用小结
来源:互联网 发布:手动抓取淘宝数据包 编辑:程序博客网 时间:2024/05/18 01:26
本章将对文本处理三剑客其中之sed命令做一个学习小结:
文本处理三剑客: Grep egrep fgrep Sed:stream Editor,流编辑器 行 awk:文本格式化工具,报告生成器Sed官方解释如下: sed - stream editor for filtering and transforming textSed工作流程:
Sed 将原文本内容逐行读入到自己的工作车间,叫做pattern space(模式空间),在pattern space中按照条件进行处理,比如正则表达式, 1.如果行数据内容没有被匹配到,进入图中"NO" 之后stdout标准输出 2.如果行数据内容匹配到,进入图中“Yes” 之后进入stdout标准输出或者根据edit规则输出数据 3.Hold space与pattern space数据可以进行互换,这部分也是sed高级特性.下面用命令和实例对sed原理加以讲解,相信大家跟下面的经典实例做些测试,会对sed命令有了更直观的理解:Sed常用选项: -n:不输出模式空间中的内容至屏幕; -e script, --expression=script:多点编辑; 实例: ~]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab ,两个命令即为多点编辑, -f /PATH/TO/SED_SCRIPT_FILE 注明:-f参数引用一个文件,将多个命令同时引用,文件命令格式为:每行一个编辑命令即可; -r, --regexp-extended:支持使用扩展正则表达式; -I [SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;所以接下来的案例都是源文件显示内容,如果有-i参数,显示的内容会保存到源文件中,此参数慎用!地址定界: (1) 空地址:对全文进行处理; (2) 单地址: #:指定行; /pattern/:被此模式所匹配到的每一行; (3) 地址范围 #,#: #,+#: #,/pat1/ /pat1/,/pat2/ $:最后一行; (4) 步进:~ 1~2:所有奇数行 2~2:所有偶数行 实例: 显示所有的奇数行: sed -n '1~2p' /etc/passwd编辑命令 d 删除 P 显示模式空间中的内容 a \text 在行后面追加文本“text” 支持使用\n实现多行追加 I \text:在行前面插入txt 支持使用\n实现多行追加 实例: [root@222 ~]# sed '3a \newline\nsecond new line' /etc/fstab c \text 匹配到的行替换为此处指定文本“text” 注意是整行替换 W /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定文件中 r /PATH/FROM/SOMEFILE:读取指定文件内容至当前文件匹配到的行处 = 为模式匹配到的行打印行号 !取反条件s///:查找替换 替换标记: g:全局替换 w:/PATH/TO/SOMEFILE p:显示替换成功的行 练习1:删除/boot/grub.conf 文件中所有以空白字符开头的行的行首的所有空白字符; ~]# sed 's@^[[:space:]]\+@@' /etc/grub.conf 练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符; ~]# sed 's@^#[[:space:]]*@@' /etc/fstab 练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname; ~]# echo "/var/lib/games/" | sed 's@[^/]\+/\?$@@'Hold space与pattern space数据互换: 高级编辑命令: h:把模式空间内容覆盖至保持空间 H:把模式空间内容追加至保持空间中 g: 把保持空间中的内容覆盖至模式空间中 G:把保持空间中的内容追加至模式空间中 x:把模式空间中与保持空间中内容互换 n;读取匹配都得行的下一行至模式空间中 N:追加读取匹配到的行的下一行至模式空间中 d:删除模式空间中的行 D:删除多行模式空间中的所有行 sed '/^$/d;G' FILE: (1)/^$/d 是在pattern space中删除源文件所有空白行 (2)G:把Hold 保持空间中的内容追加至pattern模式空间中,保持空间数据此时是空的,所以G:是逐行向源文件添加空行: 所以该命令可以理解为删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;如图显示的源文件空白行没了,但原有内容都附加了空白行:
马哥linux培训笔记
0 0
- Linux sed 命令使用小结
- sed命令的使用小结
- Linux中使用sed命令替换字符串小结
- Linux中使用sed命令替换字符串小结
- Linux中使用sed命令替换字符串小结
- linux sed命令使用
- linux sed命令使用
- linux sed命令使用
- linux sed 命令使用
- linux sed命令使用
- linux使用sed命令
- shell脚本的sed命令使用小结
- linux sed命令使用总结
- Linux下sed命令使用
- linux sed命令使用详解
- linux的sed命令使用
- linux sed 命令的使用
- linux-命令sed 使用技巧
- iOS OC语言(三) 继承
- 正则表达式的基本概念和语法
- android-App Install Location
- 机器学习公开课笔记(4):神经网络(Neural Network)——表示
- Android动画(4) 矢量动画SVG
- Linux sed 命令使用小结
- meteor 学习-- #二 开始使用Meteor
- JavaScript正则表达式
- python read() readline() readlines() write() writelines()方法总结
- mmap:是什么 为什么 怎么用
- Collection集合、List集合
- JZ2440学习笔记
- 2-6-静态链表-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- 55分钟学会正则表达式