web-dev-qa-db-fra.com

Comment faire correspondre les espaces dans sed?

Comment puis-je assortir les espaces dans sed? Dans mes données, je souhaite faire correspondre tous les 3 + espaces blancs suivants (espace de tabulation) et les remplacer par 2 espaces. Comment cela peut-il être fait?

206
Peter Smit

La classe de caractères \s correspond aux caractères d'espacement <tab> et <space>.

Par exemple:

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

remplacera chaque séquence d’au moins 3 espaces blancs par deux espaces.


REMARQUE: Pour la conformité POSIX, utilisez la classe de caractères [[:space:]] au lieu de \s, car cette dernière est une extension GNU sed. Voir les spécifications POSIX pour sed et BREs

209
mrucci

Cela fonctionne sur MacOS 10.8:

sed -E "s/[[:space:]]+/ /g"
61
some ideas

Certaines versions plus anciennes de sed peuvent ne pas reconnaître\s comme un jeton de correspondance d’espace. Dans ce cas, vous pouvez faire correspondre une séquence d'un ou plusieurs espaces et onglets avec '[XZ] [XZ] *' où X est un espace et Z est un onglet.

13
sed 's/[ \t]*/"space or tab"/'
10
Zac