Linux基础命令之sed用法
1.sed:Stream Editor 行处理工具,流编辑器
对文件内容逐行进行处理调用操作并显示到STDOUT
工作流程:
(1)sed默认不编辑原文件,而是逐行操作,复制一份到指定内存(pattern space,模式空间)
(2)pattern space内进行模式匹配,即和指定条件做匹配
不满足模式:输出到标准输出STDOUT
满足模式:进行指定的模式操作,再输出到STDOUT
(3)第二个特殊的内存空间 hold space:保持空间,临时保存操作在另一处内存
(4)当执行pattern space和 hold space相关选项时候回进行之间的数据流编辑操作
(5)最后根据操作执行hold space空间操作,选择性显示到STDOUT
2.格式:sed [OPTION]… {script-only-if-no-other-script} [input-file]…
其中{script-only-if-no-other-script}:指的是AddressCommands,地址界定执行命令
AddressCommands中间无空格,直接连接为一个选项操作
============ sed [OPTION]… AddressCommands [input-file]…==============
(1)OPTION常用选项
-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE : 每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
(2)地址定界
1)空地址:什么都不填写时,表示对全文进行处理
2)单地址
#:表示对指定的行
/pattern/:被此模式所匹配到的每一行,其中模式两边的/不能省略
3)地址范围 (#表示任意数字)
#,#:从某行到某行,第二个#大于第一个#
#,+#:从某行开始加多商行
#,/pattern1/:从某行开始到第一次配到模式的行
/pattern1/,/pattern2/:从第一次匹配到的模式1到第二次匹配到哦的模式2
4)步进:~,#~# 从第几行
1~2:所有奇数行。从第一行开始,每次加两行读取
2~2:所有偶数行。从第二行开始,每次加两行读取
(3)编辑命令
d:删除;
p:显示模式空间中的内容;
a \text:在行后面追加文本“text”,支持使用\n实现多行追加;
i \text:在行前面插入文本“text”,支持使用\n实现多行插入;
c \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=:为模式匹配到的行打印行号;
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;~]# sed 's@^[[:space:]]\+@@' /etc/grub2.cfg练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;~]# sed 's@^#[[:space:]]*@@' /etc/fstab练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'
3.pattern space和hold space编辑命令操作
(1)常用选项
h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g:把保持空间中的内容覆盖至模式空间中;
G:把保持空间中的内容追加至模式空间中;
x:把模式空间中的内容与保持空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;
(2)实例演示
sed -n 'n;p' FILE:显示偶数行;
sed '1!G;h;$!d' FILE:逆序显示文件的内容;
sed ’$!d' FILE:取出最后一行;
sed '$!N;$!D' FILE:取出文件后两行;
sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;
sed 'n;d' FILE:显示奇数行;
sed 'G' FILE:在原有的每行后方添加一个空白行;
转载于:https://blog.51cto.com/12686444/2331226
Linux基础命令之sed用法相关推荐
- linux命令shutdown -r,linux基础命令shutdown的用法详解
搜索定时关机命令shutdown,发现我的博客少了一个shutdown命令,今天就补充一下,当然服务器上自己man或–help也可以解决了.开始内容补充: 由于Linux的关机与重启是一个非常重要的命 ...
- linux基础命令怎么记,linux基础命令--笔记(示例代码)
linux基础命令--笔记 一. 1 . --help 命令简单帮助 2. man 查看命令复杂帮助 (非内置命令) 3 . help (bash的内置命令)如 :help cd .hel ...
- Linux系统运行时参数命令--Linux基础命令和工具
目录 1 Linux基础命令和工具 1.1 grep搜索字符 1.2 find查找文件 1.3 ls显示文件 1.4 wc命令 1.5 ulimit用户资源 1.6 scp远程拷贝 1.7 dos2u ...
- linux 关机命令_小猿圈Linux基础命令汇总
科技进步的今天,互联网不断的发展,很多人学习Linux运维的时候会因为记不住一些命令从而去找一些渠道,有时候因为找不到linux的命令而烦恼,下面是小猿圈linux讲师给大家总结的linux基础命令, ...
- Linux基础命令与进阶
目录标题 Linux基础命令与进阶 关机命令 Linux 用户/用户组 1.增加一个用户组 2.删除一个用户组 3.修改用户组的属性 4.添加用户账号 5.删除帐号 6.修改帐号 7.用户口令的管理 ...
- linux复制后权限变化,学霸Linux基础命令吐血总结,给你当新华字典用
Linux基础命令学习笔记 一.登录Linux [root@linux~]# root:目前使用者账户 @之后接的内容:主机名称 root为管理员账户 #:提示字元(对于root账户) $:提示字元( ...
- Linux基础命令-进程与系统性能
Linux基础命令-进程与系统性能 进程与系统性能 一.进程相关概念 1.进程概念 2.进程的基本状态和转换 3.IPC进程间通信 4.进程优先级 5.进程状态 二.进程与系统性能 1.系统管理工具 ...
- Linux 基础命令 -- usermod
命令介绍 命令:usermod 修改用户 用法:usermod [options] usermod 用户 命令选项 [root@fp-21 ~]# usermod --help-c, --commen ...
- Linux基础命令-tar打包压缩文件
Linux基础命令-echo输出信息_Linux学习中的博客-CSDN博客 Linux三剑客-grep命令_Linux学习中的博客-CSDN博客 Linux文件管理命令(3)-mv改动文件_Linux ...
最新文章
- 前端优化系列之一:dns预获取 dns-prefetch 提升页面载入速度
- uboot更改gpio电平_ECBM系列教程4:单片机的手和脚——GPIO
- 随机样本一致性:一种用于图像分析和自动制图的模型拟合模型(5)--(P4P的解析解)
- java access 不在本地_线上的java项目访问不到线上数据库,但是这个数据库我本地可以连接到,求解...
- CIF、QCIF、HD1、D1格式介绍
- PHP 常见header 状态
- U-mail邮件系统对故障的紧急措施有哪些?
- Java之volatile
- “21天好习惯”第一期-12
- AI与大众最近的接触——智能语音交互
- PostgreSQL(2)常用命令(附教程)
- 弱键(Weak Key, ACM/ICPC Seoul 2004, UVa1618)
- 计算机应用技术在医院的应用,计算机管理技术在医院的应用
- inception v2、inception v3、inception v4
- DOOM启世录的启示
- KMplayer保存上次播放位置
- 庞博 上海交大计算机系,那个脱口秀的段子手——交大帅哥庞博
- 微软官方原版本下载msdn
- DDD领域驱动设计-视频讲解+实战
- 除了知网、百度,还有什么查阅资料的网站或软件吗?
热门文章
- 吴恩达机器学习(十五)大规模机器学习(Batch、Stochastic、Mini-batch gradient descent、MapReduce)
- SpringCloudSpringBootmybatis分布式微服务云架构-hystrix参数详解
- 如何在firefox下获取下列框选中option的text
- servlet中filter的的异步问题以及JSP与servlet配合时filter的注意
- 计算机中丢失ENWeb,webapi session 丢失
- html 倒计时关闭对话框,jquery倒计时广告特效代码 可关闭的js倒计时
- 【第7篇】Python爬虫实战-收集gitee中的issue问题
- 如何在服务器上部署若依开源框架?(Linux版)
- dofilter在java中_在Filter的doFilter中进行重定向 出现异常
- java imap收邮件_android pop3与imap方式接收邮件(javamail)