如何排除目标上方的线

时间:2019-04-12 17:17:06

标签: bash search grep

我已经阅读了多篇有关如何排除grep匹配行的文章,但没有一个能最终解决,大多数都找到了其他排序数据的方法,但这不能解决不同数据的相似问题。

我有一个带有递归输出的文件,一个命令一遍又一遍地重复。我想删掉0个结果,因为它是唯一的常数,结果命中数是未知数。

无论这些行的内容是什么,我可以搜索的唯一字符串都必须在其上面加上4行,而且我还没有找到任何信息足以满足要求。

这是一个概念性问题,必须有一个简单的解决方案,但是如果需要一个示例:

Path/Path/Path> search
[results]
[results]
2 entries found
Path/Path/Path> search
[result]
1 entry found
Path/Path/Path> search
0 entry found

1 个答案:

答案 0 :(得分:0)

尝试一下:

# Assumption: The data is in logile.txt

i=0
tac logfile.txt |\
while read -r line; do
   if [[ "${line:0:7}" == "0 entry" ]]; then
        i=0
        continue
   else
       ((i++))
       [[ $i -le 4 ]] && continue
   fi   
   echo "$line"
done | tac

输出:

Path/Path/Path> search
[results]
[results]
2 entries found