Как совместить пробелы в sed?

Как я могу сопоставить пробелы в sed? В моих данных я хочу сопоставить все последующие пробелы + + (пробел) и заменить их на 2 пробела. Как это можно сделать?

185 голосов | спросил Peter Smit 24 FebruaryEurope/MoscowbWed, 24 Feb 2010 14:53:58 +0300000000pmWed, 24 Feb 2010 14:53:58 +030010 2010, 14:53:58

4 ответа


192

Класс символов \s будет соответствовать символам пробела <tab> и <space>.

Например:

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

будет заменять каждую последовательность из по крайней мере 3 пробелов двумя пробелами.


З : Для соответствия POSIX используйте класс символов [[:space:]] вместо \s, так как последний является расширением GNU sed. См. Спецификации POSIX для sed и Brès

ответил mrucci 24 FebruaryEurope/MoscowbWed, 24 Feb 2010 15:08:44 +0300000000pmWed, 24 Feb 2010 15:08:44 +030010 2010, 15:08:44
54

Это работает на MacOS 10.8:

sed -E "s/[[:space:]]+/ /g"
ответил some ideas 29 AM000000120000003431 2013, 00:28:34
13

Некоторые старые версии sed могут не распознать \ s как токен, соответствующий пробелу. В этом случае вы можете сопоставить последовательность из одного или нескольких пробелов и вкладок с помощью «[XZ] [XZ] *», где X - это пробел, а Z - вкладка.

ответил Marnix A. van Ammers 7 PMpWed, 07 Apr 2010 19:12:34 +040012Wednesday 2010, 19:12:34
8
sed 's/[ \t]*/"space or tab"/'
ответил Zac 22 J000000Tuesday14 2014, 18:52:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132