gpt4 book ai didi

sed - sed实用程序中的 'd'命令

转载 作者:行者123 更新时间:2023-12-04 11:28:57 25 4
gpt4 key购买 nike

从sed文档中:

d      Delete the pattern space; immediately start next cycle.

下一个周期是什么意思?我的理解是sed在 d 命令之后将不应用以下命令,并且它开始从输入流中读取下一行并对其进行处理。但这似乎是不正确的。请参阅以下示例:
[root@localhost ~]# cat -A test.txt
aaaaaaaaaaaaaa$
$
bbbbbbbbbbbbb$
$
$
ccccccccc$
ddd$
$
eeeeeee$
[root@localhost ~]# cat test.txt | sed '/^$/d;p;p'
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
bbbbbbbbbbbbb
bbbbbbbbbbbbb
bbbbbbbbbbbbb
ccccccccc
ccccccccc
ccccccccc
ddd
ddd
ddd
eeeeeee
eeeeeee
eeeeeee
[root@localhost ~]#

如果 立即开始下一个周期,则 p 命令将没有任何输出。

有人可以帮我解释一下吗?谢谢。

最佳答案

这意味着sed将读取下一行并开始处理它。

您的测试脚本没有按照您的想法进行。它与空行匹配,并对它们应用delete命令。它们不会出现,因此打印语句不会应用于空行。这两个打印命令未连接到delete命令的模式,因此非空行将打印3次。如果您改为尝试

sed '/./d;p;p' test.txt # matches all non-empty lines

除空白行外,什么也不会打印,每行三遍。

关于sed - sed实用程序中的 'd'命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com