百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统基础指令(三)——sed命令

ahcoder 2025-01-18 17:08 11 浏览

摘要:sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件,它不会修改原文件,除非使用 shell 重定向或执行-i来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

一、命令行格式: sed [选项] ‘command’ 输入文本

1、sed的常用选项

选项

说明

-n

使用安静模式,在一般情况所有的STDIN都会输出到屏幕上,加入-n后只打印被sed特殊处理的行

-e

多重编辑,且命令顺序会影响结果

-f

指定一个sed脚本文件到命令行执行

-r

Sed使用扩展正则表达式

-i

直接修改文档读取的内容,不在屏幕上输出

2、sed的操作命令

命令

功能

a\

在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行

c\

用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行

i\

在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行

d

删除行

h

把模式空间里的内容复制到暂存缓冲区

H

把模式空间里的内容追加到暂存缓冲区

g

把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

G

把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

l

列出非打印字符

p

打印行

n

读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理

q

结束或退出sed

r

从文件中读取输入行

!

对所选行以外的所有行应用命令

s

用一个字符串替换另一个

g

在行内进行全局替换

w

将所选的行写入文件

x

交换暂存缓冲区与模式空间的内容

y

将字符替换为另一字符(不能对正则表达式使用y命令)

备注:黑体字的命令g、w、x和y执行替换操作,谨慎使用。

二、使用例子

1、将/etc/passwd-test 的内容列出并且列印行号,同时请将第1~5行删除

执行指令# nl /etc/passwd-test | sed '1,5d'。如下图

备注:sed的动作 '1,5d' ,那个d就是删除。因为1-5行删除了,所以显示的数据就没有1-5 行,从第6行开始显示。

2、删除第8到最后一行

执行指令# nl /etc/passwd-test | sed '8,$d'。如下图

3、在第2行后加上Drink Coffee

执行指令# nl /etc/passwd-test | sed '2a Drink Coffee'。如下图

4、在第2行前加上Drink Coffee

执行指令# nl /etc/passwd-test | sed '2i Drink Coffee'。如下图

5、在第2行后面加入两行字, Drink Tea or Drink Coffee

执行指令# nl /etc/passwd-test | sed '2a Drink Tea or \ 然后回车出现 > 这个标志后再输入Drink Coffee ?'。如下图

6、将第1-6行的内容取代成为 No 1-6 number

执行指令# nl /etc/passwd-test | sed '1,6c No 1-6 number'。如下图

7、仅列出第 8-18 行

执行指令# nl /etc/passwd-test | sed -n '8,18p'。如下图

8、搜索有root关键字的行

执行指令# nl /etc/passwd-test | sed '/root/p'。如下图

9、搜索有root关键字的行并删除

执行指令# nl /etc/passwd | sed '/root/d'。如下图

10、多点编辑,要求删除/etc/passwd-test第三行到末尾的数据,并把bash替换为redshell

执行指令# nl /etc/passwd-test | sed -e '3,$d' -e 's/bash/redshell/'。如下图

11、直接修改文件内容(危险动作),利用sed直接在 passwd-test 文件最后一行加入# This is a test file

执行指令# sed -i '$a # This is a test file' /etc/passwd-test。如下

备注: $代表的是最后一行,而a是新增指令,在该文件最后新增# This is a test file文字。

相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何"挖坑种树"

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...