Chcę usunąć wszystkie spacje z podanego pliku tekstowego. Czy jest do tego dostępne jakieś polecenie powłoki? Lub jak używać sed
do tego celu.
Chcę coś takiego poniżej:
$ cat hello.txt | sed ....
Próbowałem tego: cat hello.txt | sed 's/ //g'
.Ale usuwa tylko spacje, a nie tabulatory.
Odpowiedzi:
Aby wyczyścić wszystkie spacje, w tym znaki nowej linii, możesz spróbować:
cat file.txt | tr -d " \t\n\r"
Możesz także użyć klas postaci zdefiniowanych przez tr (kredyty do komentarza htompkins ):
cat file.txt | tr -d "[:space:]"
Na przykład, aby usunąć tylko poziomą białą przestrzeń:
cat file.txt | tr -d "[:blank:]"
źródło
tr
. Przykłady: Aby usunąć wszystkie białe spacje:cat file.txt | tr -d "[:space:]"
Aby usunąć wszystkie poziome spacje:cat file.txt | tr -d "[:blank:]"
O wiele prostsze moim zdaniem:
sed -r 's/\s+//g' filename
źródło
Myślę, że możesz użyć seda, aby wyczyścić przestrzeń, nie tracąc przy tym informacji, jak przejście na inną linię.
cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
źródło
tr -d " " < infile.txt > outfile.txt
Spróbuj tego:
sed -e 's/[\t ]//g;/^$/d'
(znalezione tutaj )
Pierwsza część usuwa wszystkie tabulatory (
\t
) i spacje, a druga część usuwa wszystkie puste wierszeźródło
^$
dopasowuje pusty wiersz, ponieważ szuka „początku wiersza” (^), a następnie bezpośrednio po nim „końca wiersza” ($).Jeśli chcesz usunąć WSZYSTKIE spacje, nawet nowe linie:
perl -pe 's/\s+//g' file
źródło
Najłatwiejszy sposób dla mnie ->
echo "Hello my name is Donald" | sed s/\ //g
źródło
To prawdopodobnie najprostszy sposób na zrobienie tego:
sed -r 's/\s+//g' filename > output mv ouput filename
źródło
Spróbuj tego:
tr -d " \t" <filename
Zobacz stronę podręcznika tr (1) po więcej szczegółów.
źródło
Stary, po prostu python test.py w twoim terminalu.
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()
źródło
f.read().strip("\t\n\r ")
bardziej wydajny?Ta odpowiedź jest podobna do innej, jednak niektórzy ludzie narzekają, że dane wyjściowe trafiają do STDOUT, mam zamiar zasugerować przekierowanie go do oryginalnego pliku i nadpisanie go. Normalnie nigdy bym tego nie sugerował, ale czasami szybkie i brudne prace.
cat file.txt | tr -d " \t\n\r" > file.txt
źródło
hmm ... wygląda na to, że coś w kolejności
sed -e "s/[ \t\n\r\v]//g" < hello.txt
powinno być w odpowiednim miejscu (w każdym razie wydaje się działać pod cygwin).źródło