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 пробела.

  • *

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

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 в качестве пробела, совпадающего с токеном. В этом случае вы можете сопоставить последовательность одного или нескольких пробелов и табуляций с ‘[XZ][XZ]*’, где X - пробел, а Z - табуляция.

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