Je veux remplacer Je comprends une boîte Normalement (dans d'autres coquilles?) Utilisez: P> onglet code> S dans
stdout code> avec des points-virgules, en exécutant
sed code> de la coque ZSH.
somecommand | sed 's/[TAB]/;/g'
3 Réponses :
L'utilisation de ZSH n'a rien à voir avec cela. Le \ t code> est une extension GNU aux expressions régulières utilisées dans SED. Sur une BSD SED, vous n'avez pas les extensions, alors devez utiliser l'onglet littéral. p>
@poplitea Si votre script ne fonctionnera que dans ksh93, bash ou zsh (par opposition à d'autres variantes SH telles que PDKSH, Bourne ou Ash), vous pouvez utiliser $ 's / \ t /; /' g Code> où la coque fait l'expansion des barres obliques backslash et
sed code> voit un caractère d'onglet littéral.
@Gilles: fantastique! Je savais de $ (), mais pas de substitution de $ ''. Merci beaucoup, cela facilite la résolution de mon problème. Vous auriez probablement dû mettre cela dans une réponse plutôt qu'un commentaire, cependant (?).
Une option est de préparer votre script SED à l'avance avec Printf. mais Michael ++ ... Il peut y avoir d'autres variantes SED qui soutiennent également des échappements de style Printf, mais c'est certainement pas "standard". p> p>
Si vous connaissez la sortie de la commande est un texte normal (uniquement des onglets et du texte imprimable), vous pouvez utiliser: -E code> active "étendu "Les expressions régulières, qui peuvent contenir des noms de classe de caractères. P> p>