Quero remover todas as linhas vazias de um arquivo. Mesmo que a linha contenha espaços ou tabulações, ela também deve ser removida.
fonte
Quero remover todas as linhas vazias de um arquivo. Mesmo que a linha contenha espaços ou tabulações, ela também deve ser removida.
Apenas grep
para não-espaços em branco:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
, dentro dos intervalos de caracteres ( [...]
), é chamado de classe de caracteres POSIX. Existem alguns exemplos [:alpha:]
, [:digit:]
... [:blank:]
corresponde ao espaço em branco horizontal (na localidade POSIX, espaço e tabulação, mas em outras localidades, pode haver mais, como todos os caracteres de espaçamento horizontal Unicode nos locais UTF8), enquanto [[:space:]]
corresponde à horizontal e vertical branco caracteres de espaço (o mesmo que [:blank:]
mais itens como guia vertical, feed de formulário ...).
grep '[:blank:]'
Retornaria as linhas que contêm qualquer um dos personagens, :
, b
, l
, a
, n
ou k
. As classes de caracteres são reconhecidas apenas dentro [...]
e ^
dentro [...]
negam o conjunto. Então, [^[:blank:]]
significa qualquer personagem, exceto os em branco.
$
para o fim da linha?[^[:blank:]]$
corresponderia apenas às linhas que terminam em um espaço em branco. Queremos linhas que contêm um não-branco em qualquer lugargrep -E '\S'
que não funcionariam?Aqui está uma
awk
solução:Com
awk
,NF
definido apenas em linhas que não estejam em branco. Quando essa condição corresponder, aawk
ação padrãoprint
imprimirá a linha inteira.fonte
E se:
ou
ie
Para cada linha, substitua:
^
")[[:blank:]]
") zero ou mais vezes ("*
")$
")Mais informações sobre :: blank :: e outros caracteres especiais em http://www.zytrax.com/tech/web/regex.htm#special
fonte
[[:space:]]
inclui guias. Caso contrário, sua regex falharia se um espaço seguisse uma guia.wctype(3)
eisalpha(3)
man descrevem o que as classes de caracteres corresponderão.Você pode usar o
sed
comando para remover linhas em branco:Este comando exclui todas as linhas vazias do arquivo "in"
fonte
Parece que eu encontrei um não tão rápido, mas engraçado, afinal:
| xargs -L1
fonte
Tente ex -way:
Para vários arquivos (editar no local):
Nota: O
:bufdo
comando não é POSIX .Sem modificar o arquivo (basta imprimir na saída padrão):
fonte
Use o seguinte comando:
que remove todas as linhas, incluindo espaços ou tabulações.
Caso contrário, a remoção não incluindo linhas com espaços / tabulações, use:
Por exemplo:
Veja também:
sed
: Excluir linhas vazias usando sedawk
: Remover linhas em branco usando awkfonte