gpt4 book ai didi

linux - 反向打印文件的 Sed 命令跳过最后一行

转载 作者:太空狗 更新时间:2023-10-29 12:03:45 26 4
gpt4 key购买 nike

我正在尝试使用 sed 来反向打印文件(我知道它可以通过无数其他方式完成,例如 tac)。这是我到目前为止得到的:

sed -n -r '/.+/{x;H;$p}' nums

文件nums每行包含一个数字,从1到25。逻辑是这样的,每个数字首先被复制到holdspace,而内容holdspace 通过 x; 复制到 patspace。所以现在 holdspace 包含当前的数字,而 patspace 包含到现在为止的倒序数字。然后 H; 将到目前为止经过的数字列表附加到 holdspace,以便最新的数字始终保持在最前面。最后,当到达最后一行时,最后一次完成,并通过$p打印出来。

但是,该命令仅以相反的顺序输出数字 24 到 1。第一行应该是 25,但不知何故被跳过了。

谁能告诉我这段代码有什么问题?

最佳答案

您还缺少最后一个 x。您将最后一行的内容交换到保留空间中,但您永远不会在打印前将其拉回。

sed -n -r -e '/.+/{x;H}' -e '${x;p}'

您还会得到一个额外的空行,因为您真的不想在第一行执行“H”,因为这会保留保留空间的初始空白内容。我会这样做:

sed -n -r -e '/.+/x' -e '2,$H' -e '${x;p}' nums

关于linux - 反向打印文件的 Sed 命令跳过最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444324/

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