linux-shell脚本命令之sed
[ sed简单介绍: ]
[ sed工作流程: ]
称为模式空间; 然后依据我们的须要进行编辑,
[ sed经常使用选项: ]
-n: 仅仅会显示模式空间里的内容, 而不会显示没有编辑过的内容。
[ sed经常使用命令: ]
d: 删除, 由于是删除,
所以 d 后面通常不接不论什么东西;
s:
替代, 能够直接进行替换的工作, 通常这个 s 的动作能够搭配正规表示法;
a: 追加, a 的后面能够接字符串, 而这些字符串会在新的一行出现(眼下的下一行);
i: 插入, i
的后面能够接字符串, 而这些字符串会在新的一行出现(眼下的上一行);
c: 代替, c 的后面能够接字符串, 这些字符串能够代替一行内容;
[ 经常使用命令举例: ]
## 删除操作 d : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1. sed '$d' aaa.txt # 删除aaa.txt中最后一行 (对单行进行操作)
2. sed '7,9d' aaa.txt # 删除文件aaa.txt中第七行到第九行 (对多行进行操作)
3. sed '/aaa/,/bbb/d' aaa.txt # 删除文件aaa.txt中含有aaa至含有bbb之间全部的行 (对多行进行操作)
## 替代操作 s : - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
替换格式: sed 'range s/orig/new/sign' file # 假设没有指定范围的话, 将会对全文进行操作.
1. sed 's/aaa/bbb/' ccc.txt # 将ccc.txt全文中每行的第一个keyword aaa 替换成 bbb, 由于我们没有指定不论什么模式
2. sed 's/aaa/bbb/g' ccc.txt # 将ccc.txt全文中全部 aaa 替换成 bbb, 由于我们加了sign: g
3. sed 's/aaa/bbb/2' ccc.txt # 将ccc.txt全文中每行第二个 aaa 替换成 bbb, 由于我们加了sign: 2
4. sed '1s/aaa/bbb/g' ccc.txt # 将ccc.txt全文中第一行全部 aaa 替换成 bbb, 由于我们加了range: 1, 加了sign: g
5. 上面演示样例也能够用其它字符隔开(仅仅有替换有): sed 's#aaa#bbb#' ccc.txt
6. old位置支持正则, 但在new位置不支持正则, 除了字符 \n \&
sed '1s/a/N&N/2' ccc.txt # 将ccc.txt全文中第一行第二个 a 替换成NaN, & 相当于对前面 a 的引用
7. 对特定的范围做多个操作, 那么我们要把多个操作用 { } 括起来, 用 ; 隔开多个命令.
sed '1{s/a/b/g; s/b/c/}' ccc.txt # 先将ccc.txt全文中第一行全部 a 替换成 b, 再将第一行第一个keyword b 替换成 c
8. 上面所讲都是替换一个单词, 假设我们想替换某个字符, 那么能够使用 y 命令
sed '1y/abc/xyz/' ccc.txt # 将ccc.txt中全文第一行全部 a 替换成 x, b 替换成 y, c 替换成 z
追加操作 a : - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ccc.txt # 将ccc.txt中含有 ab 的行以下再插入一行字符串xxx
2. sed '1a zhang\njim' ccc.txt # 在ccc.txt中第一行以下插入zhang再在下一行插入jim, \n 起换行作用
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
2. sed '$a abc' ccc.txt # 在ccc.txt中最后一行插入abc
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2. sed '1c ab' ccc.txt # 将ccc.txt中第一行整行替换成ab
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[ sed其它命令: ]
1. = 为显示行号
sed '/^abc/{=}' ccc.txt # 以abc开头的关键词所在的行号
2. n 为获取下一行 (当前行从模式空间删除,
下一行读入模式空间)
sed '/^a/ {n;s/b/B/g}' ccc.txt # 匹配以a开头的下一行整行, 使用 B 替换 b.
3. N 为读取多行内容到模式空间: (当前行和下一行都在模式空间中)
sed '/^A/{s/tb/TB/; N; s/t\nb/TB \n/}' ccc.txt # 匹配以 A 开头的行, 将tb替换成TB; 再读取下一行, 将当前行的t和下一行的b替换成TB
4. 使用多行模式空间的话, ^ 就不是行的开头, 而是模式空间的开头; $ 就不是行的结尾, 而是模式空间的结束.
替换前:a b c d e 替换后:A b c d e
a b c d e a b c d e
sed 'N; s/^a/A/' ddd.txt # 第一行和第二行都会被读入模式空间, 但仅仅有第一行的 a 会被替换成 A, 第二行的 a 并不会被替换.
替换前:a b c d e 替换后: a b c d e
a b c d e a b c d E
sed 'N; s/e$/E/' ddd.txt # 第一行和第二行都会被读入模式空间, 但仅仅有第二行的 e 会被替换成 E, 第一行的 e 并不会被替换.
5. 除了模式空间, 还有保持空间, 我们能够把它理解成一个缓存. 保持空间的内容和模式空间的内容能够互换
h : 把模式空间内容存储到保持空间; G : 把保持空间里面的内容存储到模式空间;
替换前:a 替换后:b
b a
aa bb
bb aa
sed '/a/{h; d}; /b/{G}' eee.txt # 匹配含有 a 的那一行,把它们保存在保持空间并从模式空间删除;匹配含有b的那一行,把保持空间内容放到模式空间;
6. set里面没有循环, 假设想实现循环的效果, 能够借助标签
linux-shell脚本命令之sed的更多相关文章
- linux shell脚本命令
sort命令 sort #按照字典序排序 sort -n #以数值来排序,避免10比2小的情况 sort -k #如果文件有多列,指定排序的列 sort -r #逆序排列 uniq 命令 sort t ...
- linux 基础 shell脚本命令
#########shell脚本命令#### 1.diff diff file file1 ####比较两个文件的不同 -c ####显示周围的行 -u ####按照一格式统一输出生成补丁 -r ## ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- linux shell 脚本攻略学习20--awk命令入门详解
awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...
- Linux Shell脚本攻略
-Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...
- 老李分享:《Linux Shell脚本攻略》 要点(四)
老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2. ...
- 老李分享:《Linux Shell脚本攻略》 要点(二)
老李分享:<Linux Shell脚本攻略> 要点(二) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...
- 读《Linux Shell脚本攻略》(第2版) 总结
前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...
- linux ——shell 脚本
linux—shell 脚本 精简基础 2018/10/30 13 ...
随机推荐
- Linq实现t-Sql的各种连接
在ORM框架大行其道的今天,对于.net行业的人,想要学好EF,那Linq的学习在势在必行啊.今天总结下平时比较常用的表连接的用法. Inner Join Linq: var list = (from ...
- 【Eclipse】报错提示删掉@Override
是因为项目的JRE System Library版本不对,点击Edit进入Edit Library 界面,因为项目默认是使用Eclipse自带的jdk版本(Workspace default JRE) ...
- [Swust OJ 666]--初来乍到(题号都这么溜~~,递归,找规律)
题目链接:http://acm.swust.edu.cn/problem/0666/ Time limit(ms): 1000 Memory limit(kb): 65535 Descriptio ...
- C# 网络编程 Part.1
本人也是新手,对网络编程一窍不通,所以从今天开始我将学习网络编程的基础知识,在此一一贴出来,编辑成一个系列! 1.为自己复习巩固用 2.可以找到同时在学习网络编程的同学,一起讨论交流,促进学习效率及其 ...
- JVM 重排序
在java代码到最终执行的指令序列的整个过程中,会出现重排序.也就是说最终执行的顺序并不是按照源代码执行的顺序来进行的. 其中1为编译器的优化重排序,2,3是处理器的重排序. 数据依赖 如果两个操作访 ...
- HDU 3917 最大权闭合图 求最小割
具体参考http://blog.csdn.net/power721/article/details/6665750 TODO //#pragma comment(linker, "/STAC ...
- <climits>头文件使用方法
<climits>头文件定义的符号常量 CHAR_MIN char的最小值SCHAR_MAX signed char 最大值SCHAR_MIN signed char 最小值UCH ...
- onekey_fourLED
也许我们刚开始用到开发板的时候都会去做跑马灯的程序,后来给我们的要求是,如果硬件接口有限制,只有一个key 或者是button—— 我们的板子上是button,让你用一个button去控制这四个led ...
- Python 2.7 学习笔记 异常处理
如同别的开发语言,python也支持异常处理机制.本文介绍下它的基本语法. 一.异常的基本处理框架如下: try: 业务代码 except 异常类1: 异常处理代码 except 异常类2: 异常处理 ...
- JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)
链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...