Linux 4.15 rc7,Linux学习之十五(sed命令)-2017-4-23

sed命令:流编辑器

1、sed基本用法:

sed:Stream EDitor

行编辑器(全屏编辑器:vi)

2、sed:模式空间(默认不编辑原文件,仅对模式空间中的数据做处理,处理结束后,将模式空间打印至屏幕)

3、sed  [options] 'AddressCommand' file.....

-n:静默模式,不再默认显示模式空间中的内容

例如:[root@Ourlab ~]# sed -n '/^L/p' /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

LABEL=/home             /home                   ext3    defaults        1 2

LABEL=/boot             /boot                   ext3    defaults        1 2

LABEL=SWAP-sda5         swap                    swap    defaults        0 0

-i:直接修改原文件

-e script -e script:可以同时执行多个脚本

-f /path/to/sed_script:把脚本中保存的命令应用于指定的文件中

用法:sed -f /path/to/scripts file

-r:表示使用扩展正则表达式

Address:

1、StartLine,EndLine

比如:1,100

$:最后一行

例如:[root@Ourlab ~]# sed '3,$d' /etc/fstab

2、/RegExp/

比如:/^root/

例如:[root@Ourlab ~]# sed '/oot/d' /etc/fstab

3、/Pattern1/,/pattern2/:第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行

4、LineNumber:指定的行

5、StartLine, +N:从startline开始,向后的n行;

例如:[root@Ourlab ~]# sed '1,+2d' /etc/fstab

Command:

d:删除符合条件的行

例:[root@Ourlab ~]# sed '1,2d' /etc/fstab

p:显示符合条件的行

例如:[root@Ourlab ~]# sed -n '/^L/p' /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

LABEL=/home             /home                   ext3    defaults        1 2

LABEL=/boot             /boot                   ext3    defaults        1 2

LABEL=SWAP-sda5         swap                    swap    defaults        0 0

a \string:在指定的行后面追加新行,内容为string

例如:[root@Ourlab ~]# sed '/^L/a \#hello world' /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

#hello world

\n:可以用于换行

i \string:在指定的行前面添加新行,内容为string

r filename:将指定的文件的内容添加至指定的行处

例如:[root@Ourlab ~]# sed '2r /etc/issue' /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

LABEL=/home             /home                   ext3    defaults        1 2

Red Hat Enterprise Linux Server release 5.8 (Tikanga)

Kernel \r on an \m

w filename:将指定范围内的内容另存至指定的文件中;

例如:[root@Ourlab ~]# sed '/oot/w /tmp/oot.txt' /etc/fstab

[root@Ourlab ~]# cat /tmp/oot.txt

LABEL=/boot             /boot                   ext3    defaults        1 2

s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被匹配到的符串

例如:[root@Ourlab ~]# sed 's/oot/OOT/' /etc/fstab

LABEL=/bOOT             /boot                   ext3    defaults        1 2

加修饰符:

g:全局替换

例如:[root@Ourlab ~]# sed 's/oot/OOT/g' /etc/fstab

LABEL=/bOOT             /bOOT                   ext3    defaults        1 2

i:忽略字符大小写

s///(s###,s@@@):分隔符不局限于‘/’,只要保证三个一致,可替换成其他符号;

例如:[root@Ourlab ~]# sed 's#oot#OOT#g' /etc/fstab

&:引用模式匹配整个串

任务1:like替换为liker,love替换为lover

例如:例如:[root@Ourlab ~]# sed 's#l..e#&r#g' sed.txt

hello,liker

hi,my lover

后向引用:\(\),\1,\2

任务2:like替换为Like,love替换为Love

例如:[root@Ourlab ~]# sed 's#l\(..e\)#L\1#g' sed.txt

hello,Like

hi,my Love

课后练习:

1、删除/etc/grub.conf文件中行首的空白符;

[root@Ourlab ~]# sed 's/[[:space:]]//g' /etc/grub.conf

2、替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5;

[root@Ourlab ~]# sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab

3、删除/etc/inittab文件中的空白行;

[root@Ourlab ~]# sed '/^$/d' /etc/inittab

4、删除/etc/inittab文件中开头的#号;

[root@Ourlab ~]# sed 's/^#//g' /etc/inittab

5、删除/etc/inittab文件中开头的#号,但要求#号后面必须有空白字符;

[root@Ourlab ~]# sed -r 's/^#[[:space:]]+//g' /etc/inittab

6、删除某文件中以空白符后面跟#类的行中的开头的空白字符及#;

[root@Ourlab ~]# sed -r 's/^[[:space:]]+#//g' ./testsed.txt

7、取出/etc/rc.d/abc/cef/文件路径的目录名称;

[root@Ourlab ~]# echo "/etc/rc.d/abc/cef/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'

阅读(360) | 评论(0) | 转发(0) |

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAS单点登陆的两个原理图

最近学习CAS单点登录,所以在网上找了两张比较清晰的原理图以供参考: 【CAS浏览器请求认证序列图】 其中:* ST:Service Ticket,用于客户端应用持有,每个ST对应一个用户在一个客户端上* TGT:Tick…

java api帮助文档_JAVA的Swagger界面丑、功能弱怎么破?

在做CRMEB-JAVA开源商城系统时,我们团队用到了uni-app,也是时下比较流行的移动端开发技术,这里边就牵扯到了前后端全部分离的问题,一般在使用java开发前后端分离项目的时候,都会用到Swagger,Swagger 是一个…

C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网

本文主要是关于汇编和 C 语言的相关介绍,并着重对汇编和 C 语言的不同及其编程技巧进行了详尽的阐述。汇编和 C 语言C 语言和汇编语言的区别在于他们之间优缺点几乎是相反的。C 语言和汇编语言的优缺点:以 c 来举例优点:c 的运行效率高&#…

mysql5.6.8源码安装

mysql5.6.8源码安装 内核: [rootopop ~]# cat /etc/centos-release CentOS release 6.8 (Final)[rootopop ~]# uname -aLinux opop 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux mysql5.6.8的源码包下载地址&#xf…

python xlrd模块_python之xlrd模块

xlrd模块 一、xlrd模块 1、python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,这两个适用于.xls格式有效 2、 xlrd模块安装 在cmd窗口 pip install xlrd 二、使用介绍 1、常用单元格中的数据类型 ♦ 0. empty&am…

c语言取反运算详细步骤,C语言取反运算~

问题: printf("%x,%d\n",~7,~7);解:十进制数字 7 的二进制码00000000 00000000 00000000 00000111按位取反运算 ~711111111 11111111 11111111 11111000所以 printf("%x\n",~7); //十六进制输出:fffffff811111111 111…

set集合判断集合中是否有无元素_一文了解 JavaScript 中的 Set(集合)- 对 Set 的扩展...

阅读全文需要 4 分钟。主要介绍对 ES6 中的 Set 集合方法的扩展。阅读本文后,你能创建出对 Set 方法扩展,并且结合下期内容,将其发布到 NPM 中。往期回顾一文了解 JavaScript 中的 Set(集合)一文了解 JavaScript 中的 Set(集合)- 多种去重技巧…

c语言大数的加减运算,求用C编个大数加减法运算程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼只写过加法的&#xff0c;杭电的A B Problem (II)(AC)&#xff1a;#include #include #include #define N 3000int main(void){int n, i, j, k, p, q, a, b, t, up;char s[N];scanf("%d ", &n);for (i 0; i < n…

从面试官角度告诉大家如何准备项目方面的描述

之前写了篇博文&#xff0c;你的简历能帮你争取到面试机会吗&#xff0c;反响不错&#xff0c;也承蒙管理员抬爱&#xff0c;放在首页&#xff0c;为了答谢大家&#xff0c;在这篇博文里&#xff0c;我来分享些如何准备和叙述项目经验的技巧。 本文的内容是根据java web轻量级开…

站怎么点都是一样_老鼠被卡在轮胎里,像是被点了穴道一样:这可怎么办才好?...

从小就被灌输了一个思想&#xff1a;猫和老鼠是天敌&#xff0c;也没有想过这样根深蒂固的思想有一天会发生变化。直到有天偶然看到猫咪被老鼠吓到四处乱窜才觉得这一定理并非是永恒不变的&#xff0c;毕竟生活总是充满着惊喜与惊吓。来看看下面这个小故事&#xff0c;感受一下…

-3.14c语言四舍五入,(4.14)向上取整、向下取整、四舍五入取整的实例

【四舍五入取整截取】select round(54.56,0) 【向下取整截取】SELECT FLOOR(54.56) 【向上取整截取】SELECT CEILING(13.15)以下转自&#xff1a;http://www.2cto.com/database/201209/156996.html--MSSQL取整函数的使用--两个整数相除将截断小数部分select 3/4,4/3,5/3--结果…

sql空字符串判断函数_access常用的内置函数

&#xfeff;&#xfeff;新朋友点“Office交流网“蓝字关注我们Access提供了几种类型的函数&#xff0c;可将这些函数分为以下几类&#xff1a;转换&#xff1a;把一个值转换为另一个。日期/时间&#xff1a;返回日期和/或时间值。判断检查&#xff1a;判断是否正确算术计算&a…

实验吧—Web——WP之 Guess Next Session

打开链接&#xff0c;他有给出查看原码的按钮&#xff0c;那么我们打开看看 在这个里面&#xff0c;如果GET的值等于session的就会给出flag 那么我们进行抓包改包 在输入框内随意输入一个值然后抓包 将password的值删去&#xff0c;并且将cookie后面的PHPsessid的值也删去&…

简易贪吃蛇c语言贴吧,熬书几个月,终于编出简易的贪吃蛇了,VS2013

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#define X 30#define Y 15void guozi(int *x, int *y);int main(void){char map[X][Y];int x;int y;//横纵坐标int i;int j;//标记蛇头int p, q;//标记蛇尾int t, d;//寻找蛇尾int n 4;//蛇的长度…

linux命令行提示符居中,linux命令行学习(54):修改提示符

提示符由环境变量PS1决定&#xff0c;所以&#xff0c;修改提示符就是修PS1的值。一、保存PS1原来的值以及恢复原值为了防止麻烦&#xff0c;在修改PS1的值之前&#xff0c;可以先将PS1的值保存起来&#xff0c;以备以后恢复。我们建立一个环境变量ps1执行命令&#xff1a;ps1&…

flask(精讲)

Flask 一&#xff1a;web框架Django和Flask本质 socket服务端 ?123wsgi&#xff1a; Web服务网关接口- wsgiref # Django内部内置模块- werkzeug # Flask安装完成后&#xff0c;内部默认已经安装好werkzeugfrom werkzeug.wrappers import Request, Respons…

c++builder 运行网站的api_04 将您的API Builder Docker映像发布到AMPLIFY运行时服务(ARS)...

「注&#xff1a;转载请注明出处&#xff0c;谢谢&#xff01;」注意&#xff1a;请参考在线文档以获取最新信息。将APIBuilder应用程序部署到AMPLIFY Runtime Services在先前文章中&#xff0c;我们描述了如何轻松地使用API Builder Standalone创建微服务并将其打包为可在任何…

Android数据库 分页查询,Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据(转)...

由于刚接触android开发&#xff0c;故此想把学到的基础知识记录一下&#xff0c;以备查询&#xff0c;故此写的比较啰嗦&#xff1a;步骤如下&#xff1a;一、介绍&#xff1a;此文主要是介绍怎么使用android自带的数据库SQLite&#xff0c;以及把后台的数据用ListView控件显示…

go int64转string_go常见问题收录

本条文章记录本人在实际项目中遇到的实际问题&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;仅供参考&#xff01;欢迎点赞收藏转发&#xff0c;转载请添加原链接声明哦&#xff01;感谢您的支持。变量各种类型转换string转成intintstring转成int64int64, err : strcon…

程序员的功法

今天做复杂业务的时候有感而发。 做程序员这一行其实与练功差不多&#xff0c;都讲究外功与内功。 外功有&#xff1a;编辑器的各种快捷键使用&#xff0c;各种工具提高编程以及分析效率。 内功&#xff1a;算法&#xff0c;数据结构&#xff0c;操作系统原理&#xff0c;代码结…