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