Como verificar um conjunto de linhas em um arquivo de texto para padrões usando awk, sed ou grep?

0

Eu gostaria de escrever um script bash que lerá um arquivo contendo 100s de linhas e procurará pelo padrão def <space> , se este padrão for encontrado na linha, ele irá verificar a próxima linha para ver se o padrão ''' está presente nesta próxima linha. Se sim, então verifica se o próximo ''' é encontrado a 5 linhas de distância. Se tudo isso for sim, eco TRUE, ou eco FALSE.

Por exemplo, arquivo 1:

line 1
line2
...

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


        '''

ecoa VERDADEIRO

Arquivo 2:

line 1
line 2
...

    def something..
        int a
        ...

ecoa FALSE

Pode haver vários desses padrões de def <space> no arquivo e, se algum deles falhar no teste, o resultado geral é FALSE.

Como faço isso usando awk , grep ou sed ?

    
por learnerX 07.12.2017 / 23:43

1 resposta

0

Tente isso, vai explicar se é isso que você está procurando.

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

Tags