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"}'
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
?
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"}'