回答:
文字クラス\s
は空白文字<tab>
とに一致します<space>
。
例えば:
$ sed -e "s/\s\{3,\}/ /g" inputFile
少なくとも3つの空白のすべてのシーケンスを2つのスペースに置き換えます。
注:POSIX準拠の場合は、の[[:space:]]
代わりに文字クラスを使用して\s
ください。後者はGNU sed拡張機能であるためです。sedおよびBREの POSIX仕様を参照してください
[[:space:]
するものを使用できます[[:blank:]]
(ただし、改行、垂直タブなどは使用できません)。
これはMacOS 10.8で動作します:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"
1つ以上のスペースを一致させます。
-E
フラグもサポートしています。
sedの古いバージョンの中には、\ sをトークンに一致する空白として認識しないものがあります。その場合、1つ以上のスペースとタブのシーケンスを '[XZ] [XZ] *'と一致させることができます(Xはスペース、Zはタブ)。
sed 's/[ \t]*/"space or tab"/'
sed
、どのシステムのどのバージョンでも動作することが保証されていますか?そうでない場合、これが他の回答と同様の方法で機能する場所を言及する価値があるかもしれません、ちょうど私たちが制限を知っているので、これが意図した結果をもたらさないかもしれません。