Corresponde ao próximo padrão que é menor que o anterior

6

Eu tenho um arquivo com linhas de código QR e quero grep apenas para aqueles cujas subseqüências não aumentam em comprimento . Exemplo:

Este é bom porque a próxima sequência é menor ou igual à anterior:

####### ###### ### ### ## # # #

Este é um erro:

### ## ## ### ### ### ###### ##

Eu comecei assim:

egrep "[^#](####)+[ ]+(##)+" qr.txt

mas depois percebi que seria impossível continuar ...

    
por M-Reda Daoudi 22.12.2015 / 17:28

2 respostas

11
grep -vE '(^| )(#+) .*#' <<END
####### ###### ### ### ## # # #
### ## ## ### ### ### ###### ##
END
####### ###### ### ### ## # # #
    
por 22.12.2015 / 17:43
3

com awk :

awk '{l=length($1);for(i=2;i<=NF;i++){if(length($i)>l){next};l=length($i)}}1' file
  • l=length($1) define o varibale l como o comprimento do primeiro campo.
  • for(i=2;i<=NF;i++) faz um loop em todos os campos a partir do segundo.
  • if(length($i)>l se o comprimento desse campo for maior que o comprimento do último campo:
    • next; pula para a próxima linha.
  • l=length($i) define a variável l para a próxima iteração.
por 22.12.2015 / 18:05