grep -vE '(^| )(#+) .*#' <<END
####### ###### ### ### ## # # #
### ## ## ### ### ### ###### ##
END
####### ###### ### ### ## # # #
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 ...
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.