shell sed命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • sed 命令
    • sed 编辑器
    • sed 的工作流程的三个过程
    • 命定格式
    • 常用选项
    • 常用操作
  • 实验操作
    • 打印内容
    • 使用地址
    • 删除行
    • 替换
    • 插入


sed 命令

sed 编辑器

  • sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
  • sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。

sed 的工作流程的三个过程

  • 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
  • 执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

命定格式

sed -e '操作' 文件1 文件2 ...
sed -n -e '操作' 文件1 文件2 ...
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...


sed -e 'n{
操作1
操作2
...
}' 文件1 文件2 ...

常用选项

-e 或--expression=:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n --quiet 或 silent:禁止sed编辑器输出,但可以与p命令一起使用完成输出。
-i 直接修改目标文本文件。

常用操作

s:      替换,替换指定字符。
d:      删除,删除选定的行。
a:      增加,在当前行下面增加一行指定内容。
i:      插入,在选定行上面插入一行指定内容。
c:      替换,将选定行替换为指定内容。
y:      字符转换,转换前后的字符长度必须相同。
p:      打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
=:      打印行号。
l:      打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

实验操作

打印内容

  1. sed -n -e ‘p’

在这里插入图片描述

  1. sed -n -e ‘=’

在这里插入图片描述

  1. sed -n -e ‘l’

在这里插入图片描述

4.sed -n -e ‘=;p’

在这里插入图片描述

5.sed -n -e ‘=’ -e ‘p’

在这里插入图片描述

  1. sed -n ’
    =
    p
    ’ test

在这里插入图片描述

使用地址

sed编辑器有2种寻址方式

  • 1、以数字形式表示行区间
  • 2、用文本模式来过滤出行

在这里插入图片描述

1.sed -n ‘1p’

在这里插入图片描述

2.sed -n ‘$p’

在这里插入图片描述

  1. sed -n ‘1,3p’

在这里插入图片描述

4.sed -n ‘3,$p’

在这里插入图片描述

5.sed -n ‘1,+3p’                         #打印1之后的连续3行,即1-4行

在这里插入图片描述

6.sed ‘5q’                                  #打印前5行信息后退出,q表示退出

在这里插入图片描述

7.sed -n ‘p;n’                            #打印奇数行;n表示移动到下一行

在这里插入图片描述

  1. sed -n ‘n;p’                          #打印偶数行

在这里插入图片描述

  1. sed -n ‘2,${n;p}’

在这里插入图片描述

10.sed -n ‘/user/p’ /etc/passwd

在这里插入图片描述

11.sed -n ‘/^a/p’ /etc/passwd

在这里插入图片描述

12.sed -n ‘/bash$/p’ /etc/passwd

在这里插入图片描述

13.sed -n ‘/ftp|root/p’ /etc/passwd

在这里插入图片描述

14.sed -n ‘2,/nobody/p’ /etc/passwd

在这里插入图片描述

15.sed -n ‘2,/nobody/=’ /etc/passwd

在这里插入图片描述

16.sed -nr ‘/ro{1,}t/p’ /etc/passwd

加粗样式

删除行

  1. sed ‘d’ #全删

2.sed ‘3d’

在这里插入图片描述

3.sed ‘2,4d’

在这里插入图片描述

4.sed ‘$d’

在这里插入图片描述

5.sed ‘/^$/d’

在这里插入图片描述

6.sed ‘/nologin$/d’ /etc/passwd

在这里插入图片描述

7.sed ‘/nologin$/!d’ /etc/passwd
在这里插入图片描述
8. sed ‘/2/,/3/d’

在这里插入图片描述

  1. sed ‘/1/,/3/d’

在这里插入图片描述

替换

行范围 s/旧字符串/新字符串/替换标记

4种替换标记

数字:表明新字符串将替换第几处匹配的地方
g:表明新字符串将会替换所有匹配的地方
p:打印与替换命令匹配的行,与-n一起使用
w 文件:将替换的结果写到文件中
sed -n 's/root/admin/p' /etc/passwd

sed -n 's/root/admin/2p' /etc/passwd

sed -n 's/root/admin/gp' /etc/passwd

sed 's/root//g' /etc/passwd

sed '1,20 s/^/#/' /etc/passwd

sed '/^root/ s/$/#/' /etc/passwd

sed '/root/ s/^/#/' /etc/passwd
sed -rn 's/.*root.*/#&/p' /etc/passwd

sed -f script.sed testfile2

sed '1,20w out.txt' /etc/passwd
sed '1,20 s/^/#/w out.txt' /etc/passwd

sed -n 's/\/bin\/bash/\/bin\/csh/p' /etc/passwd
sed -n 's!/bin/bash!/bin/csh!p' /etc/passwd		#使用“!”作为字符串分隔符
sed -i 's9\945\9\99\98\939g' test.txt		#将94599替换为9893

插入

sed '/45/c ABC' testfile2

sed 'y/145/ABC/' testfile2   #使所有的1字符转换成A,所有的2字符转换成B,所有的3字符转换成C

sed '1,3a ABC' testfile2

sed '1i ABC' testfile2

sed '5r /etc/resolv.conf' testfile2

sed '/root/{H;d};$G' /etc/passwd	#将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

sed '1,2H;3,4G' /etc/passwd			#将12行复制到34行的下面

echo "111222333" | sed -r 's/(111)(222)/\2\1/'	#将字符 111222 互换位置
echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/'		#将第一个字符和最后一个字符互换

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

听我一句劝,别去外包,干了6年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…

中国移动董宁:深耕区块链的第八年,我仍期待挑战丨对话MVP

区块链技术对于多数人来说还是“新鲜”的代名词时,董宁已经成为这项技术的老朋友。 董宁2015年进入区块链领域,现任中国移动研究院技术总监、区块链首席专家。作为“老友”,董宁见证了区块链技术多个爆发式增长和平稳发展的阶段,…

Doxygen 源码分析: SymbolMap类

2023-05-21 10:59:35 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. SymbolMap 类概要3. 添加符号: SymbolMap<T>::add()4. 删除符号: SymbolMap<T>::remove()5. 符号查找: SymbolMap<T>::find()6. 哪里用了…

什么是半实物仿真平台自动驾驶半实物仿真平台有哪些?

文章目录 半实物仿真平台介绍自动驾驶半实物仿真平台介绍1.CARLA2.AirSim3.LGSVL Simulator 半实物仿真平台介绍 半实物仿真平台是一种综合利用虚拟仿真和实际硬件设备的仿真系统。它将虚拟环境和真实硬件设备结合起来&#xff0c;旨在提供更真实、更准确的仿真体验。 在半实…

基于html+css的图展示90

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation&#xff08;边界Iou&#xff1a;改进以对象为中心的图像分割评价&#xff09; 目录 一、论文出发点 二、论文核心思想 三、相关工作 四、敏感度分析 五、Boundary IoU定义和实验证明 六、应用 七…

基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Redis+Lua脚本防止超卖

超卖就是因为查询库存和扣减库存两个操作不是原子性操作&#xff0c;通过rua脚本执行这两个操作可以保证这两个操作原子性 判断库存量是不是大于等于1&#xff0c;如果大于等于1对库存减1&#xff0c;否则就不去减库存 StringBuilder sb new StringBuilder();sb.append("…

【JAVA进阶】Stream流

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;JAVASE基础 目录 1.Stream流的概述 2.Stream流的获取 3.Stream流的常用方法 1.Stream流的概述 什么是Stream流&#xff1f; 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0…

使用go语言构建区块链 Part2.工作量证明

英文源地址 简介 在上一篇文章中, 我们构建了一个非常简单的数据结构, 这是区块链数据库的本质.并且我们可以通过它们之间的链式关系来添加区块: 每个区块都链接到前一个区块.哎, 我们的区块链实现有一个重大缺陷: 向链中添加区块既容易又便捷. 区块链和比特币的关键之一是增…

面对当下各种不确定性,如何面对,每天很忙碌,不慌

&#xff08;点击即可收听&#xff09; 疫情时期,都难,疫情之后,发现还更难 随着互联网的热度的下降,各大小公司纷纷勒紧裤腰带,受打击最大的无疑是底层打工人 每天一打开手机,会发现,一些大厂裁员信息霸榜头条,年龄也是一道坎 刚刚看到一个大v发的&#xff1a; 一个原先是跨国…

如何在 OpenSUSE 上安装 VirtualBox 7?

VirtualBox 是一款开源的虚拟化软件&#xff0c;允许用户在单个计算机上运行多个操作系统。本文将详细介绍如何在 OpenSUSE 上安装 VirtualBox 7。以下是安装过程的步骤&#xff1a; 步骤一&#xff1a;下载 VirtualBox 7 首先&#xff0c;我们需要下载 VirtualBox 7 的安装包…

真题详解(语法分析输入记号流)-软件设计(八十)

真题详解&#xff08;求叶子结点数&#xff09;-软件设计&#xff08;七十九)https://blog.csdn.net/ke1ying/article/details/130787349?spm1001.2014.3001.5501 极限编程XP最佳实践&#xff1a; 测试先行、 按日甚至按小时为客户提供可运行的版本。 组件图的 插座 和插头…

Pytorch的CNN,RNNLSTM

CNN 拿二维卷积举例&#xff0c;我们先来看参数 卷积的基本原理&#xff0c;默认你已经知道了&#xff0c;然后我们来解释pytorch的各个参数&#xff0c;以及其背后的计算过程。 首先我们先来看卷积过后图片的形状的计算&#xff1a; 参数&#xff1a; kernel_size &#xff…

使用Linkage Mapper工进行物种分布建模的步骤详解(含实际案例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 文章目录 引言:一、介绍二、数据准备2.1 物种分布数据获取2.2 环境变量数据获取2.3 数据预处理

车道线检测

前言 目前&#xff0c;车道线检测技术已经相当成熟&#xff0c;主要应用在自动驾驶、智能交通等领域。下面列举一些当下最流行的车道线检测方法&#xff1a; 基于图像处理的车道线检测方法。该方法是通过图像处理技术从摄像头传回的图像中提取车道线信息的一种方法&#xff0c…

FreeRTOS(6)----软件定时器

一&#xff0c;软件定时器概述 软件定时器允许设置一段时间&#xff0c;当设定的时间到达之后就会执行指定的功能函数&#xff0c;被定时器调用的这个函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期。 二&#xff0c;回调函数的注意事项 回调函数是…

Django框架之模板过滤器

过滤器可以用来修改变量的显示样式。 使用方式 格式&#xff1a;{{变量|过滤器方法}}。可以连续使用&#xff0c;形式如&#xff1a;{{变量|过滤器方法1|过滤器方法2}}。 过滤器如下 Lower 转化为小写字母 格式&#xff1a;变量|lower Upper 转化为大写字母 格式&#xf…

chatgpt赋能python:Python的BeautifulSoup库和find_all()方法

Python的Beautiful Soup库和find_all()方法 在Web爬虫中&#xff0c;我们需要从网页中找到特定的HTML标记或属性&#xff0c;以便提取我们需要的数据。对于Python开发人员而言&#xff0c;Beautiful Soup是最流行的解析HTML和XML的库之一。该库可以让我们轻松地从HTML解析器中…

【Tcp通信服务器流程】

TCP通信流程 1、服务器端&#xff08;被动接收连接的角色&#xff09; &#xff08;1&#xff09;创建一个用于监听的套接字 - 监听&#xff1a;监听有客户端的连接 - 套接字&#xff1a;这个套接字其实就是一个文件描述符 &#xff08;2&#xff09;将这个监听文件描述符和…