J'ai un fichier avec des lignes comme suit:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Je voudrais utiliser sed pour supprimer les caractères <
,
et >
de chaque ligne
J'ai essayé d'utiliser sed 's/<>,//g'
mais cela n'a pas fonctionné (cela n'a rien changé). Dois-je échapper à ces caractères spéciaux. Est-il possible de supprimer plusieurs caractères à l'aide d'une seule sed
commande?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(comme dans la réponse de Chris Down).tr -d '<>,'
sans '' à la fin, non?Réponses:
Avec
sed
:Avec
tr
:la source
|
délimiteur un peu déroutante.sed 's/[<>]//g'
est un peu plus facile à lire.|
(et donc à y échapper) beaucoup moins que je n'ai à traiter avec le littéral/
.|
c'est aussi souvent un méta-caractère, utilisé pour l'alternance dans certaines syntaxes d'expression rationnelle (bien que cela soitsed
particulièrement nécessaire\|
pour cela). Personnellement, si j'ai besoin de traiter des/
caractères littéraux , je les utilise généralement,
comme délimiteur.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Essaye celui-là:
sed 's/[<>,]//g'
la source
|
s à l'intérieur[]
. utiliser's/[<>,]//g'
.sed 's/[<>,]/ /g'
fonctionnera exactement était bien, sauf que votre idée supprimera également les barres verticales.