Ao usar o sed command
sed -nr '/^.{101,149}$/p' infile
Quebrando:
-
-n: sem impressão
A opção -n impedirá a impressão de qualquer coisa, a menos que uma solicitação explícita para impressão seja encontrada ( ^.{101,149}$ " Linhas maiores que 100 (> = 101) e menores que 150 caracteres (< = 149) "). O sinalizador /p usado como uma maneira de ativar a impressão novamente.
-
-r: -r (--regexp-extended)
O -r ativa as expressões regulares estendidas. Se você não quiser usá-lo aqui, você precisa escapar das chaves. Então o comando seria sed -n '/^.\{101,149\}$/p' infile .
-
O
^é apenas a âncora para o início da linha e o$para o fim da linha. -
Um único
.corresponde a qualquer caractere único
Então, você entendeu, com sed -nr '/^.{101,149}$/p' infile , estamos procurando uma linha do começo ao fim que tenha ou contenha nossa regra definida.
Esta é uma maneira de duplicar a função de grep com sed , por exemplo: sed -n '/.../p' :)
Usando o gre
grep -E '^.{101,149}$' infile
-
-Eé o mesmo que a opção-rdo sed, mas para o comandogrep. Então, se você não quiser usar, é só escapar das chaves.
Usando o comando awk
awk 'length($0)>100 && length($0)<150' infile
-
lengthretorna o comprimento da linha. No awk, o$0especifica a linha inteira. Então, se o comprimento da linha estiver entre 100 e 150, será impresso.