gpt4 book ai didi

unix - sed '$!N;$!D' 解释

转载 作者:行者123 更新时间:2023-12-05 00:36:47 24 4
gpt4 key购买 nike

我知道

cat foo | sed '$!N;$!D'

将打印出文件 foo 的最后两行,但我不明白为什么。

我已经阅读了手册页并且知道 N 将下一行连接到当前处理的行等 - 但是有人可以用符合操作顺序的“良好英语”解释这里发生的事情,一步一步吗?

谢谢!

最佳答案

这是通过 sedsed 运行该脚本时的样子调试器(由 Aurelio Jargas 设计):

$ echo -e 'a\nb\nc\nd' | sed '$!N;$!D'        PATT:^a$
PATT:^a$
COMM:$ !N
PATT:^a\Nb$
COMM:$ !D
PATT:^b$
COMM:$ !N
PATT:^b\Nc$
COMM:$ !D
PATT:^c$
COMM:$ !N
PATT:^c\Nd$
COMM:$ !D
PATT:^c\Nd$
c
d

我已经过滤掉了显示保留空间(“HOLD”)的行,因为它没有被使用。 “PATT”显示模式空间中的内容,“COMM”表示即将执行的命令。 “\N”表示嵌入的换行符。当然,“^”和“$”表示字符串的开始和结束。

!N 追加下一行,!D 删除上一行并循环到脚本的开头而不进行隐式打印。当读取最后一行时,$! 测试失败,所以没有什么可做的,脚本退出并执行模式空间中剩余内容的隐式打印(因为 -n 未在参数中指定)。

免责声明:我是 sedsed 项目的贡献者,并做了一些小的改进,包括扩展颜色支持、添加 ^ 行开始指示符和初步支持Python 3。最前沿的版本(最近没有被触及)是 here .

关于unix - sed '$!N;$!D' 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816813/

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