Sed para excluir espaços em branco

14

Alguém sabe como usar Sed para excluir todos os espaços em branco em um arquivo de texto? Eu tenho tentado usar o comando "d" delete para fazer isso, mas não consigo descobrir

    
por Justin 16.10.2014 / 22:11

2 respostas

25

Que tipo de "espaço"?

Para "excluir todos os espaços em branco" pode significar uma das coisas diferentes:

  1. exclua todas as ocorrências do caractere de espaço, código 0x20 .
  2. excluir todo o espaço horizontal, incluindo o caractere de tabulação horizontal, " \t "
  3. excluir todo o espaço em branco, incluindo a nova linha " \n " e outros

A ferramenta certa para o trabalho

Se sed não for um requisito por algum motivo oculto, use melhor a ferramenta certa para o trabalho.

O comando tr tem o uso principal na tradução (daí o nome "tr") de uma lista de caracteres para uma lista de outros caracteres. Como um caso de canto, pode traduzir para a lista vazia de caracteres; A opção -d ( --delete ) excluirá os caracteres que aparecem na lista.

A lista de caracteres pode fazer uso de classes de caracteres na sintaxe [:...:] .

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

Ao insistir em sed

Com sed, a sintaxe [:...:] para classes de caracteres precisa ser combinada com a sintaxe para conjuntos de caracteres em regexps, [...] , resultando em um pouco confuso [[:...:]] :

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt
por Volker Siegel 19.10.2014 / 01:56
5

Você pode usar isso para remover todos os espaços em branco em file :

 sed -i "s/ //g" file
    
por Cyrus 16.10.2014 / 22:28

Tags