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:]]
を使用してください。sed と BREs の 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