文档章节

6-2 9 sed

阿想
 阿想
发布于 2017/09/05 21:59
字数 797
阅读 9
收藏 0
点赞 0
评论 0

9.4/9.5 sed

sed是正则表达式工具之一,非常适合对txt文本行进行调整并输出

语法:

1. sed  '/xxx/'p -n txt 匹配-输出
2. sed  '/xxx/'d txt    匹配-不输出
3. sed  ' x,y 'p -n txt 匹配-输出 			
4. sed s'/xxx/yyy/' txt 替换-输出 一行一次
5. sed s'/xxx/yyy/' g txt  替换-输出 一行多次
6. sed s'/(x)/yyy/' -r txt 替换-输出 包含正则
7. sed s'/xxx/yyy/' -i txt 替换-修改 谨慎使用
8. sed s'/(x1)(x2)(x3)/\3\2\1/' -r txt 替换-输出 调换位置
9. sed -e '/xxx/'p -e '1,10'p -n txt 匹配-输出 多次匹配

高能用法:

  • /(.*)/#&/
    • 整行匹配,&表示原行,替换效果为行首加#
  • /xxx//
    • 将xxx替换为空,效果为删除
  • /([^:]+)(:.*:)([^:]+)/\3\2\1/
    • (1)匹配第一个:前的字符串,
    • (2)匹配两个:及之间的字符串,贪婪匹配让第二个冒号表示最后一个冒号
    • (3)表示最后一个:后的字符串

举例:

打印x-y行 sed -n 'x,y'p file

[root@axiang-03 ~]# sed -n '3,10'p test.txt  
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

打印有xx的行 sed n '/xx/'p file

[root@axiang-03 ~]# sed -n '/root/'p test.txt 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

打印以xx结尾的行 sed n '/xx$/' file

[root@axiang-03 ~]# sed -n '/in$/'p test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

替换xx为yy sed 's/xx/yy/g' file

[root@axiang-03 ~]# sed 's/olo/nnnnggggg/g' test.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nnnnnggggggin
daemon:x:2:2:daemon:/sbin:/sbin/nnnnnggggggin
adm:x:3:4:adm:/var/adm:/sbin/nnnnnggggggin

删除xx sed 's/xx//g' file

[root@axiang-03 ~]# sed 's/[0-9a-r]//g' test.txt | sed -n '6,7'p 
sy:x:::sy:/s://sy
sutw:x:::sutw:/s:/s/sutw

调换行内第一个xx和最后一个yy sed -r 's/(xx)(.*)(yy)/\3\2\1/' file

[root@axiang-03 ~]# sed -r 's/(root)(.*)(bash)/\3\2\1/' test.txt |sed -n '1'p 
bash:x:0:0:root:/root:/bin/root 

行首加入xx sed 's/^.*$/xx&/' file

[root@axiang-03 ~]# sed 's/^.*$/666&/' test.txt  行首加字符 不需要g 
666root:x:0:0:root:/root:/bin/bash
666bin:x:1:1:bin:/bin:/sbin/nologin

第一组数字和最后一组英文字符调换位置

[root@axiang-03 ~]# cat 2.txt  
111eoajfe eoxiua eown  aaa
efae 222 wonf ;fafpeona bbb 323
!#werw@$333weronoanfe$@#%ccc@!#342 
[root@axiang-03 ~]# sed -r 's/([0-9]+)(.*[^a-zA-Z])([a-zA-Z]+)/\3\2\1/' 2.txt 
aaaeoajfe eoxiua eown  111
efae bbb wonf ;fafpeona 222 323
!#werw@$cccweronoanfe$@#%333@!#342
解释:贪婪匹配,保证最后条件匹配成功且最小匹配。这里如果没有停止条件,只会留给最后条件一个字符
第一个数移动到行尾
[root@axiang-03 ~]# sed -r 's/([0-9]+)(.*)/\2\1/' test.txt

场景举例,转变电话号格式

root@lixiang01:~# cat distros.txt
Ubuntu     8.04    04/24/2008 
Fedora     8      11/08/2007 
Ubuntu     6.10    10/26/2006 
root@lixiang01:~# sed -r 's/([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/\3-\1-\2/' distros.txt 或者加入-r选项,但是匹配文本中的“/”依然需要转义
Ubuntu     8.04    2008-04-24
Fedora     8      2007-11-08
Ubuntu     6.10    2006-10-26

© 著作权归作者所有

共有 人打赏支持
阿想
粉丝 0
博文 72
码字总数 69742
作品 0
sed工具与正则表达式的使用(shell第四天)

sed工具 【流式编辑器】 —— 非交互,基于模式匹配过滤及修改文本 —— 逐行处理,并将结果输出到屏幕 ——可实现对文本的输出,删除,替换,复制,剪切,导入,导出等各种操作 命令格式: ...

Morning晨丿 ⋅ 04/30 ⋅ 0

查找目录下的所有文件中是否含有某个字符串 

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式 (1...

wangxuwei ⋅ 05/07 ⋅ 0

mac自带的sed和linux表现不一致, 需要安装gnu-sed

1.本来想把逗号替换成换行,结果不行。 $echo "a,b,c,d" |sed 's/,/n/g' anbncnd 网上查了一下,原来是mac的sed对n的处理和linux不一样, 详见:http://superuser.com/questions/307165/newl...

孟飞阳 ⋅ 06/06 ⋅ 0

每日一道shell练习(09)——sed处理

1. 习题 对一个文件,1至5行删除带有英文的行,6至10行删除里面的英文字符; 2. 分析 这种要求,用sed命令就可以解决了,主要用到匹配替换的知识。 3. 脚本 前两个要求,必须使用行号匹配。主...

hello_cjq ⋅ 05/29 ⋅ 0

shell中怎么判断输入的是否是数字

在shell中我们经常要面临一个问题就是,怎么判断我交互式的前端,使用者输入的是否是数字呢?这里小编我也就会两种方法,所以今天就在这说一说 第一种:sed格式 首先:我们先(在命令行直接输...

shuai12138 ⋅ 2017/02/24 ⋅ 0

9.4/9.5 sed工具(上、下)

9.4-9.5 sed命令 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern s...

Champin ⋅ 2017/11/21 ⋅ 0

Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开

准备: cat test.txt134 示例: cat test.txt | xargs1 3 4 可以看出得到的字符串为空格隔开的。 再把上面的字符串用逗号隔开,可以使用tr命令进行空格的替换 cat test.txt | xargs | tr ' ...

easonjim ⋅ 01/20 ⋅ 0

第十一课(下):grep,sed,awk三剑客

grep命令 grep [-cinvABC] 'word' filename -c行数 -i不区分大小写 -n显示行号 -v取反 -r遍历所有子目录 -A后面跟数字,过滤出符合要求的行以及下面n行 -B后面跟数字,过滤出符合要求的行以及...

Linux学习笔记 ⋅ 06/06 ⋅ 0

shell 中如何输出 n 个连续字符

本文以输出 n 个空格为例 新建 demo.sh ,代码如下: 运行输出如下: 说明: 获取一个变量值的长度 输出 , 输出 将 0-9 的数字去掉

whoru ⋅ 04/24 ⋅ 0

克隆服务器网卡eth1 改为 eth0

首先关闭防火墙 关闭selinux 机制 查看设备文件下有没有 删除设备文件下面文件 查看 文件 网卡信息和UUID号 sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0 ==》删除网卡信...

SuperAuspicious ⋅ 04/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

三步为你的App集成LivePhoto功能

摘要:LivePhoto是iOS9新推出的一种拍照方式,类似于拍摄Gif图或录制视频片段生成图片。如果没有画面感,可以联想《哈利波特》霍格沃茨城堡的壁画,哈哈,很炫酷有木有,但坑爹的是只有iphone6S以...

壹峰 ⋅ 17分钟前 ⋅ 0

centos7 git安装

由于centos中的源仓库中git不是最新版本,需要进行源码安装。 1、查看yum仓库git信息 [root@iZm5e3d4r5i5ml889vh6esZ zh]# yum info gitLoaded plugins: fastestmirrorLoading mirror s...

xixingzhe ⋅ 26分钟前 ⋅ 0

input file 重复上传同一张图片失效的解决办法

解决办法 方法一:来回切换input[type='file']的type属性值,可以是‘text’,'button','button'....,然后再切换回来‘file’ 方法二:每次取消图片预览后,重置input[type='file']的value的...

时刻在奔跑 ⋅ 27分钟前 ⋅ 0

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根...

xiaomin0322 ⋅ 32分钟前 ⋅ 0

WampServer默认web服务器根目录位置

安装WampServer之后的web服务器根目录默认位置在WampServer安装目录下的www:

临江仙卜算子 ⋅ 33分钟前 ⋅ 0

Redux的一些手法记录

Redux Redux的基本概念见另一篇文。 这里记录一下Redux在项目中的实际操作的手法。 actions 首先定义action.js,actions的type,可以另起一个action-type.js文件。 action-type.js用来存...

LinearLaw ⋅ 34分钟前 ⋅ 0

android 手势检测(左右滑动、上下滑动)

GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等。 使用GestureDetector分三步: 1. 定义GestureDetector类 2. 初始化手势类,同时设置手势监听 3. 将touch事件交给gesture...

王先森oO ⋅ 48分钟前 ⋅ 0

java 方法的执行时间监控 设置超时(Future 接口)

java 方法的执行时间监控 设置超时(Future 接口) import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor......

青峰Jun19er ⋅ 53分钟前 ⋅ 0

一名开源小白的Apache成长自述

今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大...

微服务框架 ⋅ 55分钟前 ⋅ 0

vim介绍、颜色显示和移动光标、一般模式下复制、剪切和粘贴

1.vim 是 vi 的升级版 vim 是带有颜色显示的 mini安装的系统,一般都不带有vim [root@aminglinux-128 ~]# yum install -y vim-enhanced已加载插件:fastestmirror, langpacksLoading mir...

oschina130111 ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部