J'ai essayé:
echo -e "Egg\t \t\t salad" | sed -E 's/[[:blank:]]+/\t/g'
Ce qui se traduit par:
eggtsalad
Et...
echo -e "Egg\t \t\t salad" | sed -E 's/[[:blank:]]+/\\t/g'
Ce qui se traduit par:
Egg\tsalad
Ce que je voudrais:
Egg salad
Essayer: Ctrl+V puis appuyez sur Tab.
Utilisez le style ANSI-C en citant: $'string'
sed $'s/foo/\t/'
Donc, dans votre exemple, ajoutez simplement un $
:
echo -e "Egg\t \t\t salad" | sed -E $'s/[[:blank:]]+/\t/g'
sed
d'OSX ne comprend que ne comprend pas \t
dans le motif, pas dans le remplacement\t
du tout, car il s'agit essentiellement de l'ancienne version 4.2BSD sed
de 1982 ou à peu près. Utilisez un onglet littéral (qui dans bash
et vim
est Ctrl
+ V
, Tab
), ou installez GNU coreutils
pour obtenir un sed
plus raisonnable.
Une autre option consiste à utiliser $(printf '\t')
pour insérer un onglet, par exemple:
echo -e "Egg\t \t\t salad" | sed -E "s/[[:blank:]]+/$(printf '\t')/g"
essayez awk
echo -e "Egg\t \t\t salad" | awk '{gsub(/[[:blank:]]+/,"\t");print}'