Existem muitas maneiras de fazer isso.
Usando grep
:
grep -E '^.{6,}$' file.txt >out.txt
Agora, out.txt
conterá linhas com seis ou mais caracteres.
Caminho reverso:
grep -vE '^.{,5}$' file.txt >out.txt
Usando sed
, removendo linhas de comprimento igual ou inferior a 5:
sed -r '/^.{,5}$/d' file.txt
Reverse, imprimindo linhas com seis ou mais comprimentos:
sed -nr '/^.{6,}$/p' file.txt
Você pode salvar a saída em um arquivo diferente usando o operador >
como grep
ou editar o arquivo no local usando a opção -i
de sed
:
sed -ri.bak '/^.{6,}$/' file.txt
Será feito o backup do arquivo original como file.txt.bak
e o arquivo modificado será file.txt
.
Se você não quiser manter um backup:
sed -ri '/^.{6,}$/' file.txt
Usando o shell, Mais lento, não faça isso , isso é apenas para mostrar outro método:
while IFS= read -r line; do [ "${#line}" -ge 6 ] && echo "$line"; done <file.txt
Usando python
, ainda mais lento que grep
, sed
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if len(line.rstrip('\n')) >= 6:
print line.rstrip('\n')
Melhor usar a compreensão da lista para ser mais Pythonic:
#!/usr/bin/env python2
with open('file.txt') as f:
strip = str.rstrip
print '\n'.join([line for line in f if len(strip(line, '\n')) >= 6]).rstrip('\n')