如何使用 awk、sed 或 grep 检查文本文件中的一组行的模式?

如何使用 awk、sed 或 grep 检查文本文件中的一组行的模式?

我希望编写一个 bash 脚本,该脚本将读取包含 100 行的文件并查找模式def <space>,如果在该行中找到该模式,它将检查下一行以查看该模式是否'''存在于下一行中。如果是,则检查'''5 行之外是否遇到下一个。如果所有这些都是“是”,则回显 TRUE,否则回显 FALSE。

例如文件1:

line 1
line2
...

    def something...
        '''
        random text
        rand..text
        rand..
        ra..


        '''

回声正确

文件2:

line 1
line 2
...

    def something..
        int a
        ...

回声错误

文件中可以有多个此类def <space>模式,如果其中任何一个未通过测试,则总体结果为 FALSE。

我该如何使用awk, grep, 或 来做到这一点sed

答案1

尝试一下,将解释这是否是您正在寻找的。

 grep -A5 "def " file.txt | grep -n "'''" | awk -F ':' '{print $1}' | tr '\n' ' ' | awk  '{if ($1 == "2" && $2 == "" ) print "TRUE";else print "FALSE"}'

相关内容