Как удалить все пробелы из данного текстового файла - PullRequest
59 голосов
/ 31 марта 2012

Я хочу удалить все пробелы из данного текстового файла. Для этого есть какая-либо команда оболочки? Или как использовать sed для этой цели.

Я хочу что-то вроде ниже:

$ cat hello.txt | сед ....

Я попробовал это: cat hello.txt | sed 's/ //g'. Но он удаляет только пробелы, а не табуляции.

Ответы [ 11 ]

98 голосов
/ 31 марта 2012
$ 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.

Чтобы стереть все пробелы, включая символы новой строки, вы можете попробовать:

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

Вы также можете использовать классы символов, определенные tr (кредиты htompkins комментарий):

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

Например, чтобы стереть только горизонтальный пробел:

cat file.txt | tr -d "[:blank:]"
16 голосов
/ 19 июня 2013

Гораздо проще на мой взгляд:

sed -r 's/\s+//g' filename
11 голосов
/ 31 марта 2012

Я думаю, что вы можете использовать sed, чтобы стереть пространство, не теряя при этом некоторую информацию, такую ​​как изменение на другую линию.

cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
4 голосов
/ 20 июня 2013

Если вы хотите удалить ALL пробелы, даже новые строки:

perl -pe 's/\s+//g' file
3 голосов
/ 31 марта 2012

Попробуйте это:

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

(найдено здесь )

Первая часть удаляет все символы табуляции (\t) и пробелы, а вторая часть удаляетвсе пустые строки

2 голосов
/ 31 мая 2016

Чувак, просто python test.py в вашем терминале.

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 голосов
/ 19 мая 2014

Попробуйте это:

tr -d " \t" <filename

Для получения более подробной информации см. Справочную страницу по tr (1).

2 голосов
/ 15 мая 2014

Это, наверное, самый простой способ сделать это:

sed -r 's/\s+//g' filename > output
mv ouput filename
1 голос
/ 27 марта 2017

Этот ответ похож на другой, однако некоторые люди жаловались, что вывод идет в STDOUT. Я просто собираюсь предложить перенаправить его в исходный файл и перезаписать.Я бы никогда не предложил это, но иногда быстрая и грязная работа.

cat file.txt | tr -d " \t\n\r" > file.txt
1 голос
/ 12 февраля 2016

Самый простой способ для меня ->

        echo "Hello my name is Donald" | sed  s/\ //g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...