web-dev-qa-db-ja.com

特定のテキストファイルからすべての空白を削除する方法

特定のテキストファイルからすべての空白を削除したいです。これに使用できるシェルコマンドはありますか?または、この目的でsedを使用する方法。

以下のようなものが欲しい:

$ cat hello.txt | sed ....

私はこれを試しました:cat hello.txt | sed 's/ //g'。しかし、それはタブではなくスペースのみを削除します。

60
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.

改行を含むすべての空白を消去するには、次を試してください:

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

Trで定義された文字クラスを使用することもできます( htompkins コメントに対するクレジット):

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

たとえば、水平方向の空白のみを消去するには:

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

私の意見はもっと簡単です:

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

別の行に変更するなどの情報を失うことなく、sedを使用してスペースを一掃できます。

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

ALL whitespace、改行も削除したい場合:

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

これを試して:

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

(見つかった ここ

最初の部分はすべてのタブ(\t)とスペースを削除し、2番目の部分はすべての空行を削除します

3
keyser

これを試して:

tr -d " \t" <filename

詳細については、tr(1)のマンページを参照してください。

2
user3653982

これはおそらく最も簡単な方法です。

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

おい、端末で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

私にとって最も簡単な方法->

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

うーん... sed -e "s/[ \t\n\r\v]//g" < hello.txt程度の何かが正しい球場にあるように思えます(どんな場合でもcygwinの下で動作するようです)。

1
Jerry Coffin

この回答は他の人と似ていますが、一部の人々は出力がSTDOUTに行くと不平を言っているので、元のファイルにリダイレクトして上書きすることを提案します。私は通常これを提案することは決してありませんが、時には迅速で汚い仕事をします。

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