Encontrei uma pergunta sobre como remover linhas com mais de 2048 caracteres:
Como excluir uma linha se for maior que XY?
P: Mas como posso remover linhas menores que 4 caracteres? Portanto, remova as linhas com 1 ou 2 ou 3 de comprimento em um arquivo.
ATUALIZAÇÃO: Obrigado pelas muitas respostas BOAS, mas só posso marcar uma como OK
text-processing
sed
evacristina
fonte
fonte
sed '/^.\{,3\}$/d'
não funciona com BSD sed:sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
. A versão sed -r é sintaticamente válida, mas não remove linhas.Mais algumas variações:
ou
ou
ou
ou
ou GNU awk:
fonte
Aqui está a solução Vim usando o modo Ex do Vim e o
global
comandoIsso é muito semelhante ao uso
sed
, apenas que alguns caracteres especiais ('{', '}') precisam ser escapados.Usando o modo Very Magic Regex do Vim (\ v), essa fuga pode ser evitada.
Veja também: ajuda mágica
Também às vezes útil é fazer o oposto com
vglobal
.excluiria tudo, menos as linhas até 3 caracteres.
fonte
para remover diretamente as linhas que você pode:
Ou BRE:
Se uma linha não contiver 4 ou mais caracteres, ela será excluída.
Fazer o descrito acima no subshell de substituição de comando garantirá a
grep
obtenção de um descritor de leitura antes que o gato comece a gravá-lo, mas<<HEREDOC
também garantirá que o resultado permaneça transmitido e não cause erros de comprimento de argumento.fonte
fonte
Você pode usar
grep
:Se você contar espaços à esquerda no comprimento da linha:
Se você não contar espaços à esquerda na linha magra:
fonte