我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sed模式空间和暂存空间的区别是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sed模式空间和暂存空间的区别是什么

本篇内容主要讲解“sed模式空间和暂存空间的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sed模式空间和暂存空间的区别是什么”吧!

sed编辑器逐行处理文件,并将输出结果打印到屏幕上。sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执行完所有命令后就将处理好的行打印到屏幕上(除非之前的命令删除了该行),sed处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理、显示。处理完文件的最后一行,sed便结束运行。sed在临时缓冲区(模式空间)对文件进行处理,所以不会修改原文件,除非显示指明-i选项。

与模式空间和暂存空间(hold space)相关的命令:

n 输出模式空间行,读取下一行替换当前模式空间的行,执行下一条处理命令而非第一条命令。
N 读入下一行,追加到模式空间行后面,此时模式空间有两行。
h 把模式空间里的行拷贝到暂存空间。
H 把模式空间里的行追加到暂存空间。
g 用暂存空间的内容替换模式空间的行。
G 把暂存空间的内容追加到模式空间的行后。
x 将暂存空间的内容于模式空间里的当前行互换。
! 对所选行以外的所有行应用命令。

注意:暂存空间里默认存储一个空行。

下面是一些例子:

cat datafile
111111111111 aaa
222222222222 bbb
333333333333 ccc
444444444444 ddd
555555555555 eee
666666666666 fff

在每行后面加一空行:

sed 'G' datafile
111111111111 aaa

222222222222 bbb

333333333333 ccc

444444444444 ddd

555555555555 eee

666666666666 fff

aaa行被读入模式空间,执行G,在此行后面追加一个空行,然后打印模式空间,其他行同理。

在匹配行后加一空行:

sed '/ccc/G' datafile
111111111111 aaa
222222222222 bbb
333333333333 ccc

444444444444 ddd
555555555555 eee
666666666666 fff

在匹配行前加入一个空行:

sed '/ccc/{x;p;x;}' datafile
111111111111 aaa
222222222222 bbb

333333333333 ccc
444444444444 ddd
555555555555 eee
666666666666 fff

命令执行前后暂存空间和模式空间的变化情况:

命令     暂存空间                                         模式空间
x           执行前:null 执行后:ccc\n              执行前:ccc\n 执行后:null
p          执行前:null 执行后:ccc\n              执行前:ccc\n 执行后:null 输出一个空行
x          执行前:ccc\n 执行后:null              执行前:null 执行后:ccc\n 输出ccc所在行

(注:把ccc所在行简写为ccc)

删除偶数行:

sed '{n;d;}' datafile
111111111111 aaa
333333333333 ccc
555555555555 eee

执行n后打印第一行,然后读入第二行执行d命令,即删除此行;然后在执行n打印第三行,然后读入第四行执行d命令,依此类推。

在偶数行后添加一新行:

sed '{n;G;}' datafile
111111111111 aaa
222222222222 bbb

333333333333 ccc
444444444444 ddd

555555555555 eee
666666666666 fff

执行 n 以后将第一行输出到标准输出以后,然后第二行进入模式空间,根据前面对 G 的解释,会在第二行后面插入一个空行,然后输出;再执行 n 将第三行输出到标准输出,然后第四行进入模式空间,并插入空行,依此类推。
相应的:sed '{n;n;G;}' datafile 表示在文件的第 3,6,9,12,… 行后面插入一个空行。

将偶数行置空:

sed '{n;g;}' datafile
111111111111 aaa

333333333333 ccc

555555555555 eee

执行n后打印第一行,然后读入第二行执行g命令,g命令用暂存空间内容(null)来替换当前模式空间,即第二行被置空。其它行依此类推。

合并偶数行到上一行:

sed '{N;s/\n/\t/;}' datafile
111111111111 aaa 222222222222 bbb
333333333333 ccc 444444444444 ddd
555555555555 eee 666666666666 fff

执行N,将第二行追加到模式空间的第一行后,此时模式空间用两行,然后执行替换(s)将第一个换行符替换成tab。其它行依此类推。

加行号,大致相当于cat -n datafile:

sed = datafile
1
111111111111 aaa
2
222222222222 bbb
3
333333333333 ccc
4
444444444444 ddd
5
555555555555 eee
6
666666666666 fff

sed = datafile |sed '{N;s/\n/\t/;}'
1 111111111111 aaa
2 222222222222 bbb
3 333333333333 ccc
4 444444444444 ddd
5 555555555555 eee
6 666666666666 fff

输出文件最后2行,相当于 tail -2 datafile

sed '{$!N;$!d;}' datafile
555555555555 eee
666666666666 fff

sed '{$!N;$!d;}' : 对文件倒数第二行以前的行来说,N 将当前行的下一行追加到模式空间中以后,D 就将模式空间的内容删除了;到倒数第二行的时候,将最后一行追加到倒数第二行下面,然后最后一行不执行 d(!对所选行-此处是最后一行,以外的行执行命令) ,所以文件的最后两行都保存下来了。

将文件的行反序显示,相当于 tac 命令:

sed '{1!G;h;$!d;}' datafile
666666666666 fff
555555555555 eee
444444444444 ddd
333333333333 ccc
222222222222 bbb
111111111111 aaa

1!G表示除了第一行以外,其余行都执行G命令;$!d表示除了最后一行以外,其余行都执行d命令。

看一下sed '{1!G;h;$!d;}'命令执行过程中暂存空间与模式空间的变化:

处理行        命令         暂存空间                                                                          模式空间
第一行        h;d           执行前:null 执行后:aaa\n                                             执行前:aaa\n 执行后:null
第二行        G;h;d       执行前:aaa 执行后:bbb\n1111\n                                 执行前:bbb\n 执行后:null
最后一行    G;h          执行前:eee\n…aaa\n 执行后:fff\n…bbb\n\aaa\n       执行前:eee\n 执行后:fff\n…bbb\n\aaa\n

(注:把各个行简写了)

到此,相信大家对“sed模式空间和暂存空间的区别是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sed模式空间和暂存空间的区别是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sed模式空间和暂存空间的区别是什么

本篇内容主要讲解“sed模式空间和暂存空间的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sed模式空间和暂存空间的区别是什么”吧!sed编辑器逐行处理文件,并将输出结果打印到屏幕上。
2023-06-09

sed模式空间和暂存空间的区别

sed编辑器逐行处理文件,并将输出结果打印到屏幕上。sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执行完所有命令后就将处理好的行打印到屏幕上(除非之前的命令删除了该行),sed处理完一行就将其从模
2022-06-04

国内空间和国外空间的区别是什么

1. 价格:国内空间相对便宜,而国外空间价格较高。2. 速度和稳定性:由于国外空间的服务器距离较远,导致访问速度较慢,并且受网络波动影响较大,而国内空间访问速度更快,稳定性更高。3. 支持的语言和技术:国外空间通常支持更多的语言和技术,如A
2023-06-04

香港空间和国内空间有什么区别

香港和国内的空间在很多方面都有差异,主要体现在以下几个方面:香港的空间有限:由于香港是一个小岛,面积有限,土地资源稀缺,因此空间利用非常紧张,房价高昂。相比之下,国内地域辽阔,空间资源相对充裕。建筑密度不同:香港的建筑密度很高,许多楼房高
香港空间和国内空间有什么区别
2024-04-18

云主机和云空间的区别是什么

云主机和云空间是两种不同的云计算服务,它们的主要区别在于用途和功能。云主机是一种虚拟服务器,用户可以通过云服务提供商租用虚拟服务器来托管网站、应用程序等,具有独立的操作系统和资源,可以自由配置和管理。云主机通常用于运行需要大量计算资源和性能
云主机和云空间的区别是什么
2024-05-14

购买域名和空间的区别是什么

购买域名和空间是建立网站的两个基本步骤,它们之间的区别如下:1、域名是网站的名称,空间是网站的存储空间。域名是网站的唯一标识符,用于让用户找到您的网站;空间则是您存储网站文件、图片、数据库等内容的地方。2、域名是必需的,而空间是可选的。如果
2023-03-21

独立IP空间和共享IP空间有什么区别

独立IP空间和共享IP空间是指在互联网上分配给不同用户或不同网站的IP地址的方式,它们之间的区别主要体现在以下几个方面:独立IP空间:每个用户或网站都拥有自己的独立IP地址,不与其他用户或网站共享。这意味着用户可以独立管理和控制他们的IP地
独立IP空间和共享IP空间有什么区别
2024-04-20

外贸仿牌空间和普通空间有什么区别

外贸仿牌空间和普通空间在设计风格、产品来源、价格等方面有一定的区别。设计风格:外贸仿牌空间通常以国外知名品牌的设计风格为主,注重时尚、高端和个性化;而普通空间则更偏向于传统的设计风格,注重实用性和舒适性。产品来源:外贸仿牌空间的产品通常都是
外贸仿牌空间和普通空间有什么区别
2024-04-18

云服务器和空间的区别是什么

云服务器(CloudServer)是一种提供高性能计算和存储服务的服务器,通常用于创建虚拟私有云(VirtualPrivateCloud)。与之相比,空间服务器是一种提供存储空间和数据共享的服务器,通常用于创建私有云(PrivateCloud)。它们的区别在于:数据存储和访问方式:云服务器一般会部署在公有云平台上,客户可以通过公有云平台访问其数据。空间服务器通常需要自己的硬件设备和网络连接来实现数据存储和访问。成本:空间服务器的初始成本会相对较...
2023-10-27

云服务器和云空间的区别是什么

云服务器和云空间是两个不同的概念。云服务器(CloudServer)是一种云计算服务,其主要目的是提供虚拟化、高可扩展性和快速部署等特性,为用户提供高性能、弹性、可靠、安全和可管理的云服务。云服务器提供了多种云计算服务,包括虚拟化、容器化、负载均衡、云存储、数据库等等。云空间(CloudSpace)是一种云计算空间,其主要目的是提供更大的存储和计算能力,为用户提供更加稳定安全的云计算服务,例
2023-10-26

域名空间和服务器的区别是什么

域名空间和服务器都与网站有关,但它们的作用不同。域名空间是一种用于管理域名的系统,它将域名映射到IP地址,以便用户可以使用域名来访问网站。域名空间管理者负责维护域名数据库,并确保每个域名都有唯一的IP地址。服务器是一种计算机系统,用于提供网
2023-06-03

云服务器和云空间的区别是什么呢

云服务器是一种云计算服务,它允许用户在本地计算机上托管和运行应用程序,而不需要在云中租用物理基础设施。云服务器通常比云空间更小,但是它们具有更高的可伸缩性和可用性,因为它们可以为用户提供更高的带宽和处理能力,而云空间通常只提供较低的带宽和处理能力。云空间可以提供更大的存储容量、更快的加载速度和更好的性能,因为它们使用了云计算技术,而不需要在本地购买硬件。云空间通常比云服务器更便宜,但是它们也更适合...
2023-10-27

Python全局命名空间和局部命名空间有什么区别

Python中的全局命名空间和局部命名空间都是用来存储变量和函数的地方,但它们之间有一些重要的区别。全局命名空间是在整个程序中都可访问的命名空间,包括在函数外部定义的变量和函数。而局部命名空间是在函数内部定义的,只能在该函数内部访问。全局命
Python全局命名空间和局部命名空间有什么区别
2024-03-12

Python全局命名空间和局部命名空间有什么区别

Python拥有全局和局部命名空间,用来存储变量、函数和类。全局命名空间在模块或脚本启动时创建,可在模块内任何位置访问。局部命名空间在函数或类创建时创建,仅在其内部可访问。名称解析优先在局部命名空间中进行,然后在全局命名空间中。作用域限制了名称的可见性范围。最佳实践包括优先使用局部变量、明确声明全局变量,并避免在局部和全局命名空间中使用同名变量。
Python全局命名空间和局部命名空间有什么区别
2024-04-13

git清空本地暂存区的方法是什么

要清空本地暂存区,可以使用以下命令:1. 使用git reset命令:git reset这将把暂存区中的所有更改移除,并将它们放回工作区。2. 使用git rm命令:git rm --cached -r .这将递归地删除暂存区中的所有文件,
2023-10-18

云服务器和云空间的区别是什么意思

云服务器是一种虚拟服务器,它可以在一台物理服务器上创建多个逻辑服务器。云服务器可以提供高可用性、可靠性和弹性,能够快速地为客户提供服务,并且能够按需收费。云空间是一种云计算服务,它可以为多个用户提供虚拟的计算资源,这些资源可以被分配给不同的用户,每个用户可以使用自己的权限来访问这些资源。云空间可以提供高可靠性、安全性和弹性,可以实现按需付费,而云服务器需要客户自己购买硬件资源。云服务器适用于大规模...
2023-10-27

独立IP空间和共享IP虚拟主机空间有什么区别

独立IP空间和共享IP虚拟主机空间之间的主要区别在于IP地址的独立性和安全性。在独立IP空间中,每个网站都拥有自己独立的IP地址,这意味着网站的访问者可以直接通过该IP地址访问网站,而不会受到其他网站的影响。这种独立性可以提高网站的安全性和
独立IP空间和共享IP虚拟主机空间有什么区别
2024-04-23

域名与空间的关系及区别是什么

域名和空间是两个不同的概念,但它们之间有一定的关系。域名是指网站的地址,用来唯一标识一个网站。域名是由若干个单词和点组成的,例如“www.example.com”。域名需要注册并支付一定的费用,可以通过DNS解析将域名转换为IP地址,从而让
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录