gpt4 book ai didi

ubuntu - 在 TXT 中最后一次提到特定字符串之后,使用 sed 删除所有行

转载 作者:行者123 更新时间:2023-12-04 18:36:26 26 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

Apple prices
$15.74 p 12
$13.17 p 12
$8.19 p 8
Apple prices
$12.99 p 11
$4.67 p 1
$3.22 p 2
Apple prices
$3.99 p 1
$4.65 p 2
$2.19 p 1

我想要一个单行 sed 命令,在最后一次提到“Apple 价格”之后删除所有内容。所以结果是:
Apple prices
$15.74 p 12
$13.17 p 12
$8.19 p 8
Apple prices
$12.99 p 11
$4.67 p 1
$3.22 p 2

在 sed 中,我尝试使用 '/Apple prices/q2'但这会在第一次提及而不是最后一次之后删除所有内容。

有没有办法让它只在最后一次使用 sed 提到它之后删除所有内容?

最佳答案

问题是 sed 不知道“Apple 价格”的出现是否是最后一个,直到它到达另一个 - 或者文件的末尾。但它可以在 Hold Space 中收集行并推迟决定:

sed -n '/Apple prices/{x;/./p;d;};H'

编辑:受@potong 评论启发的替代方案:
sed '/Apple prices/!{H;d;};x;1d;'

关于ubuntu - 在 TXT 中最后一次提到特定字符串之后,使用 sed 删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61493617/

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