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 ...
随机推荐
- MySQL 学习之查漏补缺
1.InnoDB 相关知识点 InnoDB 引擎是将数据划分为若干数据页,页大小一般16 KB,16384个字节. 插入数据是以记录为单位,这些记录在磁盘的存放方式称之为 行格式/记录格式,有 com ...
- 百度找不到,但高手都知道(感觉他们都知道)的一个小细节--BUG调试报告
语言 Batch 前言 以前我一直不明白为什么那么多应用程序在读取"文件路径"作为参数时为什么总是在正式的"文件路径"前要加上个"-f".& ...
- Linux命文件与目录属性
一.linux系统中文件标志 d ===> 目录 - ===> 文件 l ===> 连接文件 b ===> 可供存储设备文件 c ===> 串形端口设备文件(鼠标,键盘) ...
- 20 java 基础回顾--中阶引入
一.数据类型 基本数据类型(共:四类八种) 整数 byte short int long 浮点 float double 字符 char 布尔 boolean 引用数据类型(new的数据) Stude ...
- MySQL中的事务和MVCC
本篇博客参考掘金小册--MySQL 是怎样运行的:从根儿上理解 MySQL 以及极客时间--MySQL实战45讲. 虽然我们不是DBA,可能对数据库没那么了解,但是对于数据库中的索引.事务.锁,我们还 ...
- hadoop(十)hdfs上传删除文件(完全分布式七)|12
集群测试 上传小文件到集群,随便选择一个小文件上传到hdfs的根目录 [shaozhiqi@hadoop102 hadoop-3.1.2]$ bin/hdfs dfs -put wcinput/wc. ...
- mysql几个操作数据库命令符下的常用命令
1.导出整个数据库 mysqldump -u用户名 -p密码 数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql sva_rec & ...
- MD5中使用16进制
MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...
- 小白们错过就没了!Python基础之注释&变量命名
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:DZQTesters PS:如有需要Python学习资料的小伙伴可以加 ...
- stand up meeting 1/18/2016
part 组员 工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 准备最后的发布和整个开发的整理总结 6 release ...