首页 > 其他分享 >第七章 流编辑器sed

第七章 流编辑器sed

时间:2024-03-24 11:59:09浏览次数:11  
标签:bin sbin nologin 编辑器 sed 第七章 mail root

第七章 流编辑器sed

sed是一个脚本型,非交互式的编辑器。sed没有交互式的编辑界面,光标移动以及庞大的快捷键功能。

1,工作原理

1,sed一次处理一行内容。处理时,把当前的行存储在临时缓存区(模式空间)中,接着用sed命令处理缓冲区中的内容,处理完成后,再把缓冲区的内容输出到屏幕。如此周而复始。

2,sed有两个内存缓冲区,分别为模式空间和保持空间(暂存缓冲区)

3,sed首先把第一行的内容装入模式空间,处理后输出到屏幕;然后继续把第二行装入模式空间(替换掉模式空间第一行的内容),再进行处理。

image.png

2,语法格式及特点

sed从文件中读取数据,如果没有输入文件,则默认对标准输入进程数据进行处理。

sed可以将数据进行替换,删除,新增,选取特定行等功能。

语法格式

sed		[options]   command  file1  file2
或
sed		[options]	-f	scriptfile

特点

(1)非交互,基于模式匹配的过滤及修改文本。
(2)逐行处理,太大的文件使用sed会显得格外有优势。
(3)可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种编辑。
(4)脚本化,在Shell脚本编程中使用sed比vim方便。

3,用法

image.png

image.png

image.png

image.png

4,支持正则表达式

1,正则表达式是扩在斜杠间的模式,用于查找和替换

#基本元字符
^  $  . *  [] [^]  \<\>	  \(\)  \{\}

#扩展元字符
?  +  {}  |  ()
1,#取出/etc/passed文件前十行
[root@localhost ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
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
[root@localhost ~]# head /etc/passwd > passwd

2,#打印password(由于sed选项为空)
[root@localhost ~]# sed '' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
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

3,#删除文件的第四行
[root@localhost ~]# sed '4d' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/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

4,#加p打印,(由于sed默认会输出处理后每一行的内容,又使用p命令,所以会打印两次)
[root@localhost ~]# sed 'p' passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
#取消sed的默认打印,使用-n功能,屏蔽sed程序自动输出
[root@localhost ~]# sed -rn 'p' passwd

注意:在操作时,如果不指定操作范围,默认是对文件所有行进行操作

5,案例实战

#sed的替换命令
格式:s/原内容/新内容/标示

s:为替代命令
g:表示对模式空间的所有匹配进行全局更改
p:表示打印模式空间的内容
d:表示删除指令
r:支持正则表达式
a:追加在后面
i:追加在前面


地址用于决定对那些进行编辑。地址的形式可以是数字,正则表达式或两者的结合。
如果没有指定地址,sed将处理输入文件的所有行
1,#在文件passwd中搜索root并替换为alice
[root@localhost ~]# sed -r 's/root/alice/' passwd	(没有g只替换一个)
alice:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
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:/alice:/sbin/nologin

2,#sed处理输入文件中的所有行
[root@localhost ~]# sed -r '3d' passwd		#删除第三行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/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

#删除root的行
[root@localhost ~]# sed -r '/root/d' passwd

#从root的行开始删除到第五行
[root@localhost ~]# sed -r '/root/,5d' passwd

#以bin开头的行删除到第五行
[root@localhost ~]# cat -n passwd		#显示行号
[root@localhost ~]# sed -r '/^bin/,5d' passwd

#以bin开头,从root开始再加5行删除
[root@localhost ~]# sed -r '/^bin/,+5d' passwd

#加上!表示非,除root以外的行删除
[root@localhost ~]# sed -r '/root/!d' passwd


3,#删除所有奇数行,从第一行开始每隔两行删除
[root@localhost ~]# sed -r '1~2d' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin

#删除所有偶数行,从第一行开始每隔两行删除
[root@localhost ~]# sed -r '2~2d' passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

4,#在指定行前面加#号
[root@localhost ~]# sed -r '1,5s/(.*)/#\1/' passwd
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#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

注:\1 :表示前面第一个左括号所表示的内容 ,\2表示前面第二个左括号中表示的内容,依次类推

5,#写入保存命令w,表示将模式空间的内容写道文件file中。把带root的行保存到/tp/1.txt文件中。
[root@localhost ~]# sed -r '/root/w /tmp/1.txt' passwd
[root@localhost ~]# cat /tmp/1.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

6,#追加命令a,a后面的内容追加到一个文件中。
[root@localhost ~]# sed -r '2a\11111111' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
11111111
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

#i命令表示追加在前面
[root@localhost ~]# sed -r '2i\22222222' passwd
root:x:0:0:root:/root:/bin/bash
22222222
bin:x:1:1:bin:/bin:/sbin/nologin
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

标签:bin,sbin,nologin,编辑器,sed,第七章,mail,root
From: https://blog.csdn.net/weixin_57789471/article/details/136985018

相关文章

  • 26版SPSS操作教程(初级第七章)
    前言#由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次第六章的学习笔记,希望能得到一些指正和帮助~#第七章一些学习笔记SPSS中集中趋势的描述指标(位置统计量)有算术均数(ArithmeticMean)、中位数(Median)、截尾均数(TrimmedM......
  • eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 解释
    eslintsrc--extts,tsx--report-unused-disable-directives--max-warnings0解释一下这段命令这段命令是用来运行ESLint工具检查代码的,针对的是src目录下所有.ts和.tsx后缀的TypeScript文件。命令各部分的具体含义如下:eslint:这是执行ESLint工具本身的命令......
  • MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
    打开mongoDB的mongoshell,出现以下提示,此时输入任意键都会退出界面,无法进行命令输入。这时,我们首先在网址栏中输入http://localhost:27017/是否连接到27017端口,如果返回结果如下:接着在cmd命令提示符中输入mongod,确认MongoDB服务器是否启动,返回结果如下:从红色框标记的部分......
  • 12 vi编辑器
    介绍vi\vim是visualinterface的简称,是Linux中最经典的文本编辑器命令行下对文本文件进行编辑的绝佳选择vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。vi\vim......
  • react router v6报错 useRoutes() may be used only in the context of a <Router> comp
    在使用reactrouterv6版本的时候,按照之前的方法使用src/main.tsx是这样的,几乎不动import*asReactfrom"react";import*asReactDOMfrom"react-dom/client";import"~/assets/index.css";importAppfrom"~/App.tsx";ReactDOM.createRoot(......
  • Java基础内容:第七章面向对象(下)编程题详解
            建了一个群:908722740 ,欢迎小伙伴门的加入,平时可以互相学习交流,不管是学习还是工作上的都可以多多交流,本人在校学生,技术有限,错误的地方欢迎指正。目录一、多态案例素材【1】乐手弹奏乐器【2】比萨制作【3】购买饮料二、接口案例素材【1】兔子和青蛙【......
  • Jmeter Beanshell编辑器配置使用
    1、背景考虑到jmeter在编写groovy及beanshell脚本时,编辑器工具没有命令行提示的功能,因此特写本文章,配置IDE工具。2、使用工具说明开发编辑器IntelliJIDEA2022.3.1Jmeter5.6.33、配置步骤3.1下载jmeter源码https://jmeter.apache.org/download_jmeter.cgi3.2build......
  • TimesURL: 用于通用时间序列表征学习的自监督对比学习《TimesURL: Self-supervised Co
    2024年3月18日,最近有点忙,但是这周四周五都要汇报,不想往后推了,早汇报完早结束,硬着头皮先看这一篇,这篇年前就说要看,还保存了书签,但是一直没看,今天趁着中午的时间看一下。(现在14:01,开始看,我的草稿箱里躺着的18篇草稿,Sorry,以后有空再填坑.)论文:TimesURL:Self-supervisedContrasti......
  • 想要把PDF文件转TXT文本编辑改动怎么办?三秒钟帮你搞定 PDF编辑器
    pdf是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式。PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符、颜色以及图象。有点遗憾的是,大部分移动设备诸如手机、MP4等是不支持打开......
  • zhipuai的GLM-4模型API访问出现错误: ConnectError: TLS/SSL connection has been clo
    1简介访问zhipuai的GLM-4模型的API时,挂上梯子后访问失败,显示ConnectError:TLS/SSLconnectionhasbeenclosed(EOF)(_ssl.c:1131)报错信息如下{ "name":"ConnectError", "message":"TLS/SSLconnectionhasbeenclosed(EOF)(_ssl.c:1131)",......