it-swarm.com.de

So entfernen Sie alle Leerzeichen aus einer bestimmten Textdatei

Ich möchte alle Leerzeichen aus einer bestimmten Textdatei entfernen. Gibt es dafür einen Shell-Befehl? Oder wie Sie sed für diesen Zweck verwenden.

Ich möchte etwas wie unten:

$ cat hello.txt | sed ....

Ich habe folgendes versucht: cat hello.txt | sed 's/ //g'. Aber es entfernt nur Leerzeichen und keine Tabs.

48
Lunar Mushrooms
$ man tr
NAME
    tr - translate or delete characters

SYNOPSIS
    tr [OPTION]... SET1 [SET2]

DESCRIPTION
   Translate, squeeze, and/or delete characters from standard 
   input, writing to standard output.

Um alle Leerzeichen einschließlich Zeilenumbrüche zu löschen, können Sie Folgendes versuchen:

cat file.txt | tr -d " \t\n\r" 

Sie können auch die von tr definierten Zeichenklassen verwenden (Credits an htompkins comment):

cat file.txt | tr -d "[:space:]"

Zum Beispiel, um nur horizontale weiße Flächen zu löschen:

cat file.txt | tr -d "[:blank:]"
81
Paulo Scardine

Meiner Meinung nach viel einfacher:

sed -r 's/\s+//g' filename
14
Lucie G

Ich denke, Sie können sed verwenden, um den Raum zu löschen, ohne dabei Informationen wie den Wechsel von In eine andere Zeile zu verlieren.

cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
10
Umae

Wenn SieALLELeerzeichen entfernen möchten, sogar Zeilenumbrüche:

Perl -pe 's/\s+//g' file
3
glenn jackman

Dude, nur python test.py in deinem Terminal.

f = open('/home/hduser/Desktop/data.csv' , 'r')

x = f.read().split()
f.close()

y = ' '.join(x)
f = open('/home/hduser/Desktop/data.csv','w')
f.write(y)
f.close()
2

Versuche dies:

sed -e 's/[\t ]//g;/^$/d' 

(gefunden hier )

Der erste Teil entfernt alle Tabulatoren (\t) und Leerzeichen und der zweite Teil entfernt alle leeren Zeilen

2
keyser

Versuche dies:

tr -d " \t" <filename

Weitere Informationen finden Sie in der Manpage für tr (1).

1
user3653982

Dies ist wahrscheinlich die einfachste Möglichkeit, dies zu tun:

sed -r 's/\s+//g' filename > output
mv ouput filename
1
Gorton Fishman

Der einfachste Weg für mich ->

        echo "Hello my name is Donald" | sed  s/\ //g
0
mminski

hmm ... scheint etwas in der Reihenfolge von sed -e "s/[ \t\n\r\v]//g" < hello.txt im richtigen Park zu sein (scheint auf jeden Fall unter cygwin zu funktionieren).

0
Jerry Coffin

Diese Antwort ist ähnlich wie bei anderen. Einige Leute haben sich jedoch beschwert, dass die Ausgabe an STDOUT geht. Ich würde das normalerweise nie vorschlagen, aber manchmal schnell und schmutzig klappt. 

cat file.txt | tr -d " \t\n\r" > file.txt
0
Omar Quaye