sed: supprimer les caractères entre deux chaînes de caractères
Je voudrais utiliser sed pour supprimer tous les caractères entre "foo=1&" et "bar=2&" pour tous les événements dans un fichier xml.
<url>http://example.com?addr=123&foo=1&s=alkjasldkffjskdk$bar=2&f=jkdng</url>
<url>http://example.com?addr=124&foo=1&k=d93ndkdisnskiisndjdjdj$bar=2&p=dnsks</url>
Voici ma commande sed:
sed -e '/foo=1&/,/bar=2&/d' sample.xml
Lorsque je l'exécute, le fichier est inchangé.
Ci-dessus est basé sur cet exemple: Trouver "mot1" et supprimer entre ça et "chaîne2"
- Oui. Quand j'ajoute l'option-i, je me retrouve avec un fichier vide
- Cette opération peut être déplacé à l'Linux / Unix stackexchange.
Vous devez vous connecter pour publier un commentaire.
Utiliser le substitution de commande au lieu de la supprimer commande:
s/regex/replacement/
remplace le premier match duregex
dans chaque ligne avecreplacement
.regex
peut contenir des groupes, et ces groupes peut être référencée avec\1
,\2
, etc. Cette fonctionnalité n'est pas strictement nécessaire dans ce cas, et vous pouvez utilisers/foo=1&.*bar=2&/foo=1&bar=2&/
à la place.bar=2&
dans la chaîne? Parce que ce code se lit jusqu'à la dernièreVous devez utiliser
nosid
fonctionne correctementsed
est différent