Je souhaite remplacer toutes les barres obliques '/' par des barres obliques inverses '\' et vice versa.Remplacer un caractère par un autre et vice versa dans une chaîne
Ma solution naïve est de le faire avec tr
mais je besoin d'un caractère d'espace réservé, que je ne pense pas est très joli:
tr '/' '¢' | tr '\\' '/' | tr '¢' '\\'
et cela fonctionne aussi que tant qu'il ne semble une '¢' dans ma contribution, ce qui dans mon cas est probablement assez - mais bon, qui sait? Bien sûr, il est facile de prendre cette même idée et de la rendre plus robuste en utilisant sed
, puis de remplacer «¢» par une chaîne arbitrairement aléatoire - comme «½ | # & ¬_ $» ou quelque chose comme ça. Mais je voulais savoir s'il y avait une seule commande bash pour y parvenir, ce qui rendrait cette chose plus courte, plus lisible et plus robuste. Peut-être sed
peut le faire hors de la boîte?
Pendant que nous y sommes, quel est le nom correct pour cette opération? Comme "remplacer bidirectionnel". Si je savais que mes recherches google auraient probablement été plus fructueuses. J'ai aussi essayé de «changer de personnage», mais je n'ai trouvé que des remplacements réguliers.
Merci! Peut-être que vous pouvez ajouter là-dedans que la chose la plus générale (que j'ai appris de ceci) est: avec 'tr' le remplacement se produit par élément. Dans 'tr ab xy' 'a' est remplacé par 'x' et 'b' est remplacé par 'y', et donc' tr ab ba' remplacera 'a' par 'b' et vice versa. C'était la chose la plus générale qui me manquait à propos de 'tr'. L'exemple avec les barres obliques inverses est un peu malheureux, à cause de l'échappement, ce qui n'était vraiment pas mon point de vue et le type d'encombrement de la question (et par conséquent les réponses). – dingalapadum
Si vous éditez votre réponse et ajoutez les choses mentionnées ci-dessus, je serai heureux de l'accepter (demain) - cela correspondrait aussi mieux au titre. Btw. J'aime la modification – dingalapadum