Par exemple.,
sed 's/string/ /g' where string="a\c:ti]\']x""/\//:`~$%#^&"'
C’est comment passer la chaîne à sed littéralement plutôt qu’en tant que motif de regex interprété?
Je vais utiliser cela avec cygwin et sur Ubuntu. Les solutions doivent donc être compatibles avec l'environnement.
Réponses:
Vous devriez échapper aux caractères spéciaux et utiliser un séparateur autre que "/".
la source
|
en utilisant sed.Voir ce SOq:
Cette réponse à ce qui précède:
est quelque chose dont vous avez besoin, sauf que vous le feriez dans la première partie, pas la deuxième partie de
s/first/second/
.Comme vous utilisez les deux
'
et"
dans vos commandes sed, vous devrez en échapper. Essayez de faire ceci - créez deux fichiers:1.sed
2.txt
1.sed est le script lui-même et 2.txt est un fichier de test. Exécutez-le comme ceci pour tester:
J'espère que cela t'aides.
la source
'
(devis simple) et"
(double citation), vous devrez échapper quelque chose dans la chaîne. Ce n'est pas un "problème" avecsed
per-se, même si vous faites juste echo "a \ c: ti] \ '] x" "/ \ //:~$%#^&"', it will be not a complete string. E.g. you cannot do echo "abc"" and expect it to print
abc "` - vous devez échapper à la"
.echo
la commande ne peut même pas arriver à lased
pour être échappé, il doit être échappé sur place pour être même imprimé parecho
correctement. L'autre solution - mettre la chaîne dans le fichier - est ce qui fonctionnerait, voir ma modification. J'espère que cela fonctionnera pour vous.