web-dev-qa-db-ja.com

Sedは空白を削除します

Sedを使用してテキストファイル内のすべての空白スペースを削除する方法を知っていますか?私はそうするために「d」削除コマンドを使用しようとしましたが、それを理解することができないようです

27
Justin

どんな「スペース」ですか?

「すべての空白スペースを削除する」とは、次のいずれかを意味します。

  1. 0x20というコードのスペース文字をすべて削除します。
  2. 水平タブ文字「\t」を含むすべての水平スペースを削除します
  3. 改行、「\n」などを含むすべての空白を削除します

仕事に最適なツール

sedが何らかの隠れた理由の要件ではない場合は、ジョブに適切なツールを使用することをお勧めします。

コマンドtrは、文字のリストを他の文字のリストに変換するために主に使用されます(そのため、名前は "tr"です)。まれに、空の文字リストに変換できます。オプション-d--delete)は、リストに表示される文字を削除します。

文字のリストは、[:...:]構文の文字クラスを利用できます。

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

sedを主張する場合

Sedでは、文字クラスの[:...:]構文を正規表現の文字セットの構文[...]と組み合わせる必要があり、やや混乱する[[:...:]]になります。

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt
34
Volker Siegel

これを使用して、file内のすべての空白を削除できます。

 sed -i "s/ //g" file
5
Cyrus