sedでホワイトスペースを一致させるには?

sed whitespace

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

  256  Peter Smit  2010-02-24


ベストアンサー

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

For example:

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

は、少なくとも3つの空白を含むすべてのシーケンスを2つの空白で置き換えます


REMARK.POSIX 準拠のためには、文字クラス \s の代わりに [[:space:]] を使用してください。sedBREs の POSIX 仕様を参照してください

263  mrucci  2010-02-24


MacOS 10.8で動作します

sed -E "s/[[:space:]]+/ /g"

80  some ideas  2013-08-28


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

15  Marnix A. van Ammers  2010-04-07


sed 's/[ \t]*/"space or tab"/'

13  Zac  2014-07-22


上記のどれも私には効きませんでした。しかし、awkを使うことで、これまでで一番簡単な答えを見つけました

user@~[]$ cat /tmp/file
/nospace/in/here
/this/one space
/well/seems we have spaces
user@~[]$ cat /tmp/file |awk 'NF>1'
/this/one space
/well/seems we have spaces
user@~[]$

0  user1932365  2020-10-19


タイトルとURLをコピーしました