Linux shell基础(五)sed命令
一、sed命令
sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显示到屏幕上。sed的强项是替换文本中的特定字符,而写shell有个步骤就是从一段文本中截取一段字符进行处理,所以熟练掌握sed命令是写shell脚本的基本技能。
用法:
sed [选项]... {脚本(如果没有其他脚本)} [输入文件]
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
选项:
-p 查找
-d 删除
-s 替换
二、sed 匹配搜索用法
sed可以向grep一样查找文件文本中包含关键字的行并把改行显示在屏幕上。
命令写法:sed -n '/(匹配的字符串)/'p 文件名(简记为-np)
1、搜索passwd文件中包含root关键字的行。
sed -n '/root/'p passwd

2、搜索ssh文件中以#开头的行
sed -n '/^#/'p ssh

3、搜索正则'o+t'类型的行
sed -nr ‘/o+t/’p passwd

注意“+”号属于扩展正则,需要跟-r选项才能用
4、搜索正则‘两次o’的行
sed -nr '/o{2}/'p passwd

5、搜索正则root或者bus的行‘root|bus’
sed -nr '/root|bus/'p passwd

6、不区分大小写搜索关键字所在的行
sed -n '/nologin/'Ip passwd 注意是大写字母I,不是管道符号|

拓展用法:打印指定的行
命令写法:sed -n ‘行号或行号描述’p 文件路径 注意单引号''内不需要跟两个//
1、显示文件第2行内容
sed -n '2'p passwd

2、显示文件第6行至10行内容
sed -n '6,10'p passwd 注意中间是逗号,不是-

3、全文显示
sed -n '1,$'p passwd 注意不能写成“sed -n '^,$'p passwd”

拓展用法: 多条件过滤
命令可以用-e参数匹配多个条件,注意多个条件是或者关系,只要符合其中的一条就会被找到,如果匹配两条规则,那么改行会显示两次
显示第一行和含有root关键字的行
sed -e '/root/'p -e '1'p -n passwd

三、sed删除特定行用法
对特定大文件,使用sed命令删除部分内容,要比vim去打开相应的文件再删除要实用的多。没有加-i选项的删除只是显示上的删除,不会影响文件本身的内容,但加了-i选项后会作用于原始文件,所以删除前一定要做好备份。
命令写法:sed '/(关键字)/'d 文件路径
1、删除文件的第一行
sed '1'd 1.txt
注意第一行已经被删掉了
2、删掉含关键字“bus”的行
sed '/bus/'d 1.txt

3、删掉特定时间段之前的文件的思路
首先用grep -n >命令通过时间关键字过滤出行数。
然后使用sed '1,找到的最后行行号‘d 方式删除数据
四、sed替换特定内容用法
命令写法:
sed '1,$s///g' 文件路径
1、替换文件前10行中的ro+为R
sed -r '1,10/ro+/R/g' 1.txt

2、替换文件中的数字为空,其实就是删掉文件中所有的数字
sed 's/[0-9]//g' 1.txt

这个命令经常被用来判断输入的内容是否是数字
3、替换文件中的字母为空,其实就是删掉文件中所有的英文字母
sed 's/[a-zA-Z]//g' 文件名 (复习tr 命令 tr [a-z] [A-Z])

4、在所有行前面加上字符串123
小括号为扩展正则符号,使用时要加-r选项。
sed -r 's/(.*)/123&/g' test.txt

五、sed调换字符串次序用法
替换文字的顺序的关键是要用合适的正则
小括号内容在下文中可以
命令写法:
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1:/' test.txt |head -n5

该操作的难点在于分段的正则的写法。
转载于:https://blog.51cto.com/11934539/2061781
Linux shell基础(五)sed命令的更多相关文章
- Linux安全基础:sed命令的使用
sed 是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作. Sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同:同时 ...
- Linux Shell基础 Bash常见命令 echo命令
概述 shell中常见的命令echo. 输出命令:echo echo命令的输出内容如果没有特殊含义,则将原内容输出到屏幕:如果输出内容有特殊含义,则输出打印其含义. 命令格式如下: [root@loc ...
- Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键
概述 shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...
- linux shell中使用sed命令
例1:批量的将变量的值代替指定文件中的指定内容. #!/bin/bash for i in {1..100} mgr_port=`expr $i + 5345` data_port=`expr $i ...
- Linux Shell基础 多个命令中的分号(;)、与(&&) 、 或(||)
概述 在 Bash 中,如果需要让多条命令按顺序执行,则有这样方法,如表 1 所示. 多命令执行符 格 式 作 用 : 命令1 ; 命令2 多条命令顺序执行,命令之间没有任何逻辑关系 &&am ...
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- 在shell中使用sed命令替换/为\/
sed命令相关: https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html https://www.cnblogs.com/D ...
随机推荐
- ansible七种武器和json
ansible七种武器和json • 第一种武器 – ansible 命令,用于执 ...
- Shell:Day08.笔记
函数:写一个代码块,用来重复调用的: 1.函数的写法格式 2.参数,在函数名后面直接加,即可:如果在外面 abc(){ 函数体 $@ } abc 1 2 3 4 5 :wq a.s ...
- (一)vim插件tabbar
今天早晨给 TabBar.vim 的作者Groleo发了个邮件询问这个tabbar关闭失败的问题.得到的答复是 "you can use :bd instead of :close" ...
- C语言把浮点数转换为字符串
目录 1.把float/double格式化输出到字符串 2.注意事项 3.版权声明 1.把float/double格式化输出到字符串 标准的C语言提供了atof函数把字符串转double,但是没有提供 ...
- 【PHP】PHP基本语法
一.什么是PHP? a) 定义:PHP就是超文本预处理器 b) 超文本:我们前边8天学习的内容其实就是超文本内容 c) 预处理器:相当于牛奶在工厂加工的过程,我们虽然不可见,但是我们 ...
- 这些基本的 HTML5 标签你不能不知道
HTML5元素 HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5是用来写网页的一门标记语言. 使用的时候需要在首行声明HTML,如:<!DOC ...
- Flask 入门(十)
flask 中的 db.relationship() 上文提到的方法,也可以找到狗的主人,但是,方便吗?,如果一个人有多只狗呢? 承接上文,修改main.py中的代码如下: #encoding:utf ...
- Android 图片裁剪库 uCrop
引语 晚上好,我是猫咪,我的公众号「程序媛猫咪」会推荐 GitHub 上好玩的项目,挖掘开源的价值,欢迎关注我. 现在 Android 开发,离不开图片,必然也需要图片裁剪功能,这个实现可以调用系统的 ...
- json文件操作
1.把字典或list转换成字符串方法 json.dumps() 2.把字符串转换成字典方法 json.loads() 3.indent 存储文件时每行加缩进数 4.ensere_asci 文件中有中文 ...
- Struts2-学习笔记系列(7)-PreResultListener
在action处理完成之后,系统转入实际的物理试图之间被回调. Action,拦截器都可以添加该监听器.拦截器添加了该监听器后,该监听器会对该拦截器所有拦截的action其作用 public Stri ...
