1 votes

Sed match et remplace seulement certains caractères

J'ai plusieurs cordes dans un format très similaire.

(#1111111)
(#4444444)

J'essayais d'utiliser sed pour fournir une sortie :

1111111
4444444

J'ai essayé :

sed  's/(#[0-9]+)/^[0-9]+/g'

qui semble correspondre, mais le remplacement ne fonctionne pas.

0voto

jasonwryan Points 1843

Compte tenu du format de la question, il y a deux façons de procéder :

sed 's/.*#\(.*\))/\1/' file

Cela imprimera tout ce qui se trouve entre # et tout ce qui le précède, ce qui, dans ce cas, est ( y ) .

Cela peut également être fait :

sed -e 's|^(#||g' -e 's|)$||g' file

Cela supprimera (# à partir du début de la chaîne et ) de la fin.

Sortie :

1111111
4444444

Si c'est un fichier, alors vous pouvez ajouter -i après sed pour l'éditer en place. Pour le stdout, mettez la commande qui le fournit dans sed .

S'il s'agit d'un fichier ou d'une autre sortie et qu'il y a des différences, alors vous devrez ajuster les commandes. Je n'opère que sur la base de ce que vous avez fourni dans la question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X