substituir "space" por "return" em *.txt

JoaoRamalho

Power Member
boas

tenho aqui um txt com mto texto e queria substituir os espaços por line feeds (enters). ja tive a experiementar no vi mas n consigo pk nao sei como escrever a tecla "enter"

algo como %s/<espaço>/<enter>/g

cumps
 
cat original_file.txt | sed 's/ /\n/g' > filtered_file.txt

Basicamente o comando faz: 'substitui/qq_coisa/por_isto/em_todas_as_ocurrencias'

NOTA: Existe um espaco entre os dois primeiros "/ /".
 
Última edição:
Outra solução:
Código:
$ perl -p -i -e 's|\s|\n|g' teu_ficheiro.txt

No Vim, usas:
Código:
:%s/\s/\r/g
 
Última edição:
Para inserires um "Enter" ou qualquer outro caractere especial no vim (no vi não sei, mas provavelmente estás a usar o vim...) basta fazeres Ctrl+V e depois pressionas a tecla que queres.

O comando para essa substituição seria então:

:%s/ /^M/g

O ^M significa Ctrl+M, que é o código do line feed (13, M é a 13ª letra do alfabeto :) ). Não são os caracteres '^' e 'M'. É apenas um caractere. Para o inserir fazes Ctrl+V e depois Enter (ou Ctrl+M, se te quiseres armar em esperto).

Espero que não tenhas redefinido o Ctrl+V para fazer "put" (atalhos à Windows...)

EDIT: Agora fiquei na dúvida se o line feed é o 13 ou o 10. Usa o Enter e não o Ctrl+M. É mais certo...
 
Pode-se também fazer um pequenino programa em C ou Python que faça isso.

Edit:

Estive aqui a martelar um bocado em Python e arranjei isto, não está grande coisa mas ainda sou um bocado nabo em python.

Código:
def check(text):
    
    for i in range(len(text)):

        if text[i] == " ":

            text[i] = "\n"

    return text

def toList(text):
    
    list = []
    
    for i in text:
        
        list.append(i)

    return list

def toString(text):

    string = ""

    for i in text:

        string += i

    return string

file = raw_input("Indique o nome do ficheiro:  ")

f = open(file, "r")
g = open("tmp", "w")

text = f.read()

g.write(toString(check(toList(text))))

f.close()
g.close()

f = open(file, "w")
g = open("tmp", "r")

f.write(g.read())

f.close()
g.close()

Cria um ficheiro auxiliar tmp que depois não é apagado.

O que acham?
 
Última edição:
Ja agora, para o pessoal que percebe de sed... não da para fazer substituições apenas na primeira palavra de cada linha? do genero sed s\substituir_isto\por_isto\$1 nome_do_ficheiro

Será que faz algum sentido? :wscared:
 
Ja agora, para o pessoal que percebe de sed... não da para fazer substituições apenas na primeira palavra de cada linha? do genero sed s\substituir_isto\por_isto\$1 nome_do_ficheiro

Será que faz algum sentido? :wscared:


Retira a ultima parte, o "g".
Se nao o colocares, o sed substitui apenas a primeira ocurrencia em cada linha.

Exemplo:
cat original_file.txt | sed 's/substituir_isto/por_isto/' > filtered_file.txt
 
Back
Topo