Как сопоставить пробельные символы в sed?
Как сопоставить пробельные символы в sed? В моих данных я хочу сопоставить все 3+ последующих пробельных символов (пробел табуляции) и заменить их на 2 пробела. Как это сделать?
Как сопоставить пробельные символы в sed? В моих данных я хочу сопоставить все 3+ последующих пробельных символов (пробел табуляции) и заменить их на 2 пробела. Как это сделать?
Класс \s
будет соответствовать пробелам <tab>
и <space>
.
Например:
$ sed -e "s/\s\{3,\}/ /g" inputFile
будет заменять каждую последовательность, по крайней мере, 3 белых пробела на 2 пробела.
REMARK: Для соответствия POSIX, используйте символьный класс [[:space:]]
вместо \s
, поскольку последний является расширением GNU sed. См. спецификации POSIX для sed и BREs .
Это работает на MacOS 10.8:
sed -E "s/[[:space:]]+/ /g"
```.
Некоторые старые версии sed могут не распознать \s в качестве пробела, совпадающего с токеном. В этом случае вы можете сопоставить последовательность одного или нескольких пробелов и табуляций с ‘[XZ][XZ]*’, где X - пробел, а Z - табуляция.