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-r
do 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
-
length
retorna o comprimento da linha. No awk, o$0
especifica a linha inteira. Então, se o comprimento da linha estiver entre 100 e 150, será impresso.