特定のテキストファイルからすべての空白を削除したいです。これに使用できるシェルコマンドはありますか?または、この目的でsed
を使用する方法。
以下のようなものが欲しい:
$ cat hello.txt | sed ....
私はこれを試しました:cat hello.txt | sed 's/ //g'
。しかし、それはタブではなくスペースのみを削除します。
$ 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:]"
私の意見はもっと簡単です:
sed -r 's/\s+//g' filename
別の行に変更するなどの情報を失うことなく、sedを使用してスペースを一掃できます。
cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
ALL whitespace、改行も削除したい場合:
Perl -pe 's/\s+//g' file
これを試して:
tr -d " \t" <filename
詳細については、tr(1)のマンページを参照してください。
これはおそらく最も簡単な方法です。
sed -r 's/\s+//g' filename > output
mv ouput filename
おい、端末で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()
私にとって最も簡単な方法->
echo "Hello my name is Donald" | sed s/\ //g
うーん... sed -e "s/[ \t\n\r\v]//g" < hello.txt
程度の何かが正しい球場にあるように思えます(どんな場合でもcygwinの下で動作するようです)。
この回答は他の人と似ていますが、一部の人々は出力がSTDOUTに行くと不平を言っているので、元のファイルにリダイレクトして上書きすることを提案します。私は通常これを提案することは決してありませんが、時には迅速で汚い仕事をします。
cat file.txt | tr -d " \t\n\r" > file.txt