Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在打印时,p命令会追加换行符吗?

在打印时,p命令会追加换行符吗?
EN

Ask Ubuntu用户
提问于 2019-01-08 07:04:24
回答 1查看 312关注 0票数 2

我使用的是GNU 4.5,每一个sed --version

我是sed的新手,我根据我的理解创建了sed的工作流程(如果您发现任何错误,请纠正我)。

因此,模式空间的默认自动打印似乎总是在末尾包含一个换行符。我的问题是,p是否也包括一条换行符?我有下面的例子。

代码语言:javascript
运行
AI代码解释
复制
# seq 3 | sed -rn 'p'
1
2
3

在这里,每个数字末尾的换行符是由sed自己添加的(参见图表“向模式空间添加换行符”)。因此,p似乎不会追加换行符。但是,请参阅下面的示例。

代码语言:javascript
运行
AI代码解释
复制
# seq 3 | sed -rn 'x;p;x;p'

1

2

3

在这里,x交换模式空间和保持空间,这将导致一个空模式空间。现在,p应用于模式空间(其中没有任何内容)不应该打印任何内容。但是根据结果,这里似乎p打印了一个换行符。在我看来,这似乎是不一致的行为。有人能帮我解释一下吗?

EN

回答 1

Ask Ubuntu用户

发布于 2019-01-08 08:33:54

图中有一个错误。将换行符添加回模式空间时,只有在没有-n选项的情况下运行sed时才会发生。因此,正确的图表应该是:

下面是sed是如何工作的上sed文档的摘录

当到达脚本的末尾时,除非使用-n选项,否则模式空间的内容将打印到输出流中,如果移除,则将其添加回尾随换行符。然后,下一个循环开始下一个输入行。

因此,如果我们使用-n运行sed,就不会有添加换行符的退一步。

sed的文档声明,p命令只是打印模式空间。详情请参见经常使用的命令

P打印模式空间(到标准输出)。此命令通常仅与-n命令行选项一起使用。

但是,p似乎总是会在模式空间的末尾追加一个换行符(如果您认为这是错误的,请纠正我)。

基于上述事实,让我们来看看这些例子.

代码语言:javascript
运行
AI代码解释
复制
# seq 3 | sed -rn 'p'
1
2
3

此示例的过程是:

  1. 读取文本1<newline>,剥离<newline>,并将1放在模式空间中。
  2. p打印1,然后打印<newline>
  3. 读取文本2<newline>,剥离<newline>,并将2放在模式空间中。
  4. p打印2,然后打印<newline>
  5. 读取文本3<newline>,剥离<newline>,并将3放在模式空间中。
  6. p打印3,然后打印<newline>

对于第二个例子:

代码语言:javascript
运行
AI代码解释
复制
# seq 3 | sed -rn 'x;p;x;p'

1

2

3

这一过程是:

  1. 读取文本1<newline>,剥离<newline>,并将1放在模式空间中。
  2. 1放在持有空间中,并在模式空间中放置空字符串。
  3. 打印空字符串,然后打印<newline>
  4. 1放回模式空间,并将空字符串放入持有空间。
  5. 打印1,然后打印<newline>
  6. 对其他输入行重复步骤1~5

因此,这些例子没有不一致之处。

顺便说一句,我还在学习sed,这个答案是基于我的理解。如果你发现有什么问题,请纠正我。谢谢。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1108018

复制
相关文章
你觉得 Golang 在什么时候会抢占 P?
在 Go 语言中,Goroutine 是并发模型的核心,而 P(Processor) 是 Go 调度器中的一个关键抽象。理解 Goroutine 调度模型 中的 G(Goroutine)、M(Machine,内核线程)、P(Processor,逻辑处理器) 的关系可以帮助我们理解 Go 的抢占式调度策略。
golang开发者
2024/10/28
1150
sed 保持空间命令之 H 的执行逻辑
大写 H 命令表示把模式空间的内容追加到保持空间,追加不会覆盖保持空间的内容。当向初始保持空间追加内容时,因为保持空间初始内容为一个换行符 \n,所以直接把模式空间内容追加进来。当保持空间已经有内容时,H 命令在当前保持空间内容后面加上换行符 \n,然后再把模式空间内容追加进来。
用户1148526
2024/07/08
930
sed 多行模式、分支及循环
sed 默认每次只处理一行数据,除非使用 H、G 或者 N 等命令创建多行模式,每行之间用换行符分开。本篇将解释适用于多行模式的 sed 命令。在处理多行模式时,要记住 ^ 只匹配该模式的开头,即最开始一行的开头,且 $ 只匹配该模式的结尾,即最后一行的结尾。
用户1148526
2024/07/13
2620
Mysql在字段现有内容后面追加内容
在发布系统中所有前置任务里面增加一些内容,发布系统中大约有200+的项目,手动是不可能手动的,只有在数据库中操作了。
行 者
2019/12/05
3.1K0
打印标签时如何解决打印偏移
我们在打印标签时,使用的纸张一般都是不干胶卷纸,这样的卷纸又有单排、双排、三排和四排的规格。这些不同规格的标签纸在条码打印中经常会出现打印偏移的问题,甚至会跳纸,遇到这样的情况该如何调整呢?小编下面详细介绍。
神奇像素科技
2021/11/24
2.4K0
打印标签时如何解决打印偏移
vuejs中使用axios时如何追加数据
在vuejs中使用axios时,有时候需要追加数据,比如,移动端下拉触底加载,分页加载,滑动滚动条,等等,这时候就需要追加数据了,下面我们来演示下.
itclanCoder
2023/11/08
3220
vuejs中使用axios时如何追加数据
Linux sed 命令的使用
首先,就昨晚的发的消息道歉,虽然整蛊大家了,但是我还是挺开心的。 sed是一种流编辑器,配合正则表达式使用,sed处理文件之时,把当前处理的文保存在缓冲区,sed命令处理缓冲区的内容,将缓冲区的内容显示在到屏幕上,sed能够对一些重复操作的动作进行简化。 先来了解一下sed的命令格式 sed [options] 'command' filesname sed [options] -f scriptfilename filesname sed的命令 a \ 在当前行下面插入文本 i \ 在当前行
赵腰静
2018/03/09
3.2K0
Java 会走向晦暗吗? Kotlin 会取而代之吗
Stackoverflows上的趋势图显示Java从2015年以后走下坡路,而Kotlin开始上升。该图形中的Java趋势不断下降,Java很容易失去其作为一种非常流行的编程语言的地位。
良月柒
2019/11/07
1K0
Java 会走向晦暗吗? Kotlin 会取而代之吗
LinuxShell命令sed
sed 是 Linux系统自带的流式编辑器(流式编辑器是指处理处理输入流或文本流中的数据),不同于普通的交互式文本编辑器(比如 vim),sed 编辑器根据命令来处理数据流中的数据。
hotarugali
2022/02/28
1.1K0
LinuxShell命令sed
sed & awk 第二版学习(五)—— 高级 sed 命令
高级命令改变执行或控制的流程顺序。sed 脚本中正常的控制流为:一行被读入模式空间并用脚本中的每个命令逐个应用于那一行;当到达脚本底部时,输出这一行并且清空模式空间;然后新行被读入模式空间,并且控制被转移回脚本顶端。
用户1148526
2024/09/20
1810
Python追加Excel追加数据
前面我分享了 Excel 的读写:Python 实现 Excel 的读写操作:https://bornforthis.cn/column/pyauto/auto_base05.html
AI悦创
2022/07/17
3K0
扫码打印新的实现方法(打印时输入)
打印时输入的是Label mx 条码软件的文字、条码、二维码共有属性,实现扫描一个条码,打印一个新标签,常用于重新贴码的包装箱或产品贴。下图为文字、条码、二维码的“打印时输入”属性设置:
用户6708611
2023/07/05
5240
扫码打印新的实现方法(打印时输入)
如何在条码打印软件中使用打印时保存
有些客户在条码打印软件中批量制作完成标签之后,想要把标签内容以txt文本的形式保存出来,可以把标签上的每个内容分别保存到一个TXT文本,也可以把标签上的多个内容保存到一个TXT文本中,条码打印软件中打印时保存就可以实现这个效果,具体操作如下:
用户5746110
2019/07/03
2.5K0
linux基础命令介绍十:文本流编辑 sed
与vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过sed处理后输出。
用户5030870
2019/04/10
1.1K0
grep命令-P选项
参考:https://www.cnblogs.com/weifeng1463/p/7341946.html 今天正好用到这个命令,记录一下。
Li_XiaoJin
2022/06/10
7130
AI会P图:你来描述,我来P
比如曾经介绍过的,DALL·E 可以魔法一般按照自然语言文字描述直接生成对应图片。
Jack_Cui
2021/04/13
1.4K0
AI会P图:你来描述,我来P
Mac 地址会重复吗?Mac 地址也会耗尽吗?
Mac地址有点像身份证号码,而IP地址就像门牌号码。在茫茫大海中仅凭一个身份证号码找到一颗别样的沙粒很难,但如果先找到具体的沙滩,沙滩划分很小的网格片区,就很容易通过身份证找到这颗别样的沙粒了。
杰哥的IT之旅
2021/12/16
8K0
Mac 地址会重复吗?Mac 地址也会耗尽吗?
linux中sed命令总结
原文:https://wangchujiang.com/linux-command/c/sed.html
入门笔记
2022/06/02
3.4K0
Sed..
直接编辑文件 选项-i ,会匹配file文件中每一行的所有book替换为books:
看、未来
2022/08/11
1.7K0
Mac 地址会重复吗?Mac 地址也会耗尽吗?
这是「进击的Coder」的第 567 篇技术分享来源:汇聚魔杖链接:https://www.sohu.com/a/453658004_100058692 “ 阅读本文大概需要 5 分钟。 ” IP 地址和 Mac 地址产生的目的是方便别人找到自己 Mac 地址有点像身份证号码,而IP地址就像门牌号码。在茫茫大海中仅凭一个身份证号码找到一颗别样的沙粒很难,但如果先找到具体的沙滩,沙滩划分很小的网格片区,就很容易通过身份证找到这颗别样的沙粒了。 MAC 地址(物理地址、硬件地址)是实实在在的网络设备出身地址,
崔庆才
2022/03/04
3.5K0

相似问题

执行"+p“命令

10

总是使用‘-P’标志和‘P`’命令

20

在创建别名时,引号、撇号或分号会阻止命令正常工作吗?

10

当试图安装HP p1102w-打印机的插件时,HPLIP会提供错误消息。

20

zsh: read: -p :使用带有-p标志的read命令时没有协处理错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档