gpt4 book ai didi

bash - Sed/Awk : Delete all lines after last occurrence of pattern

转载 作者:行者123 更新时间:2023-12-04 14:23:46 25 4
gpt4 key购买 nike

我有一个文件,每行一个插入,如下所示:

INSERT INTO table (columns) values (1,x,b);
INSERT INTO table (columns) values (2,y,c);
INSERT INTO table (columns) values (3,w,d);
INSERT INTO table (columns) values (4,z,e);
-- Comment
SELECT * FROM table;
-- Comment
SELECT * FROM table;

如何在最后一次出现 INSERT INTO 后删除每一行?我正在寻找的输出是:
INSERT INTO table (columns) values (1,x,b);
INSERT INTO table (columns) values (2,y,c);
INSERT INTO table (columns) values (3,w,d);
INSERT INTO table (columns) values (4,z,e);

最佳答案

更简单的方法是使用 tac :

tac file|sed '0,/^INSERT INTO/{/INSERT INTO/!d}'|tac

你也可以在没有 tac 的情况下使用 awk :
awk 'NR==FNR{if(/^INSERT INTO/)e=NR;next}FNR<=e' file file

关于bash - Sed/Awk : Delete all lines after last occurrence of pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50236151/

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