如果脚本逐行处理,如何返回处理上一行?

fem*_*bot 0 unix shell awk sed

这是我的样本列表:

AAA BBB CCC1
DDD EEE FFF1
GGG HHH III1           <----- I want to remove this
GGG HHH III3 >>updated <----- I want to keep this
JJJ KKK LLL7
Run Code Online (Sandbox Code Playgroud)

当我使用For循环遍历列表时,我想记下其中包含">> updated"的每一行并返回一行并删除旧行(未更新),然后继续前进到">>更新"行后的下一行.所以基本上我的最终输出是:

AAA BBB CCC1
DDD EEE FFF1
GGG HHH III3
JJJ KKK LLL7
Run Code Online (Sandbox Code Playgroud)

我使用awk从shell脚本解析其他字段的值,但我不太确定如何向后和向前执行此操作.任何帮助将不胜感激.

Chr*_*our 5

awk '{a=$0;getline; if ($0~/>>updated/)print $1,$2,$3; else print a,"\n"$0}' file
AAA BBB CCC1
DDD EEE FFF1
GGG HHH III3
JJJ KKK LLL7
Run Code Online (Sandbox Code Playgroud)