2010-02-24 11:53:58 +0000 2010-02-24 11:53:58 +0000
232
232

sedでホワイトスペースをマッチさせるには?

sedでホワイトスペースをマッチさせるには?私のデータの中で、3文字以上の空白文字(タブスペース)をすべてマッチさせて、2文字の空白に置き換えたいです。これはどのようにしてできますか?

回答 (4)

240
240
240
2010-02-24 12:08:44 +0000

文字クラス \s は、空白文字 <tab><space> と一致します。

例えば:

$ sed -e "s/\s\{3,\}/ /g" inputFile

は、少なくとも 3 つの空白のすべてのシーケンスを 2 つの空白で置き換えます。POSIXに準拠するためには、[[:space:]]の代わりに文字クラス\sを使用してください。sed ](http://pubs.opengroup.org/onlinepubs/009695399/utilities/sed.html) と BREs の POSIX 仕様を参照してください。

70
70
70
2013-08-28 20:28:34 +0000

これはMacOS 10.8で動作します:

sed -E "s/[[:space:]]+/ /g"
14
14
14
2010-04-07 15:12:34 +0000

sed の古いバージョンによっては、スペースマッチトークンとして s を認識しない場合があります。その場合、1つ以上のスペースとタブのシーケンスを ‘[XZ][XZ]*’ でマッチさせることができます。

11
11
11
2014-07-22 14:52:32 +0000
sed 's/[\t]*/"space or tab"/'