Isso é semelhante à resposta do Ansgar, mas um pouco mais rápido nos meus testes:
awk 'length($0) < 16384' infile >outfile
É a mesma velocidade que as outras respostas do awk. Ele depende do print
implícito de uma expressão verdadeira, mas não precisa gastar o tempo para dividir a linha como Ansgar faz.
Observe que o AWK oferece a você if
gratuitamente. O comando acima é equivalente a:
awk 'length($0) < 16384 {print}' infile >outfile
Não há if
explícito (ou seu conjunto de chaves) como em algumas outras respostas.
Aqui está uma maneira de fazer isso em sed
:
sed '/.\{16384\}/d' infile >outfile
ou:
sed -r '/.{16384}/d' infile >outfile
que exclui qualquer linha que contenha 16384 (ou mais) caracteres.
Para fins de conclusão, veja como você usa o sed
para salvar linhas maiores que seu limite:
sed '/^.\{0,16383\}$/d' infile >outfile