gpt4 book ai didi

linux - 如果它们出现在连续行中,则删除具有相似关键字的行

转载 作者:太空宇宙 更新时间:2023-11-04 10:15:08 25 4
gpt4 key购买 nike

我有一个如下格式的文本文件

sam has got grade B
score for him is 70
bob has got grade A
score for him is 90
score for him is 60
ronny has got grade B
score for him is 75
tony has got grade A
score for him is 91

正如我们所见,第 4 行和第 5 行都有分数,并且在第 5 行之前缺少成绩线。

我能想到的一种方法

grep '等级' file.txt -A 1

但是,这只会过滤掉缺少成绩的行。可能只有几行有成绩但缺少分数。

在 unix/linux 中是否有任何其他更好的命令我们可以删除这样的连续行,其中有两行包含成绩或分数。

最佳答案

这是我的 awk 解决方案,

awk '{ if (prev != $2 $3 $4) {print $0} ; prev = $2 $3 $4 ; }' file.txt

请注意,此解决方案有一个小错误,即如果末尾有多个相似的行,它会在末尾输出一个额外的行,可以轻松删除。

awk 默认使用空格分隔每行中的单词,并按顺序将每个单词命名为 $1、$2、$3 等。 prev = $2 $3 $4; 会将第二个+第三个+第四个单词保存在变量prev中。如果您的案例中有连续的行,则 $2、$3、$4 将与上一行中的行相同。如果它们不相同,print $0 将打印整行。

关于linux - 如果它们出现在连续行中,则删除具有相似关键字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744327/

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