J'ai donc essayé depuis un moment maintenant, pour correspondre à une chaîne, exclure ensuite un certain caractère de celui-ci.
Exemple: P>
INSERT INTO tags (created_at,
3 Réponses :
sed peut le faire facilement.
echo "INSERT INTO public.tags (created_at," | sed 's/tags//'
Je ne veux pas me débarrasser des tags, je veux obtenir du public. qui vient avant les tags
sed 's / public //' code>
Le public n'est pas constant, en fait, le motif est 'xyz'.tags je veux me débarrasser de XYZ quelle que soit la valeur.
D'accord. Mais vous n'avez pas mis cela dans votre question. Créez une variable (i.e. myvar = "xyz" code>), puis sous que dans la commande sed (
sed "S / $ $ myvar //" code>). Assurez-vous simplement d'utiliser des guillemets doubles si vous utilisez une variable.
s/\S+\.(?=tags\b)//
Oui c'est ça, ce serait génial si vous l'expliquez. Merci :)
(? = ...) code> est appelé un lookahead en avant. Il vérifie si la position actuelle est suivie de la sous-cutée, mais sans avancer la position de correspondance du point de vue de l'extérieur de la parens.
Votre question n'est pas très claire. Mais je pense que vous dites que vous avez: et vous voulez vous retrouver avec: p> Vous voulez supprimer le Ceci semble faire ce que vous voulez. p> public. code> - mais cela pourrait être une chaîne suivie d'un point. P>
#!/usr/bin/perl
use strict;
use warnings;
my $sql = 'INSERT INTO public.tags (created_at,';
# Use s/.../.../ - the substitution operator.
# \S - match any non-whitespace character.
# + - match one or more of the previous atom.
# \. - match a dot.
# tags - match the string 'tags'
# \b - match the end of a word
# So match a string of non-whitespace characters,
# followed by '.tags' at the end of a word.
# Replace it with 'tags'.
$sql =~ s/\S+\.tags\b/tags/;
print $sql;
Qu'attendez-vous de vous mettre à la fin?
Peut-être que
s / ^ (. *?) \ S + \. (Tags). * / $ 1 $ 2 / code>?
Probablement parce que a) votre question n'était pas claire et b) que vous n'avez montré aucun effort réel pour le résoudre vous-même. (Remarque: je n'étais pas le bownvoter - je devine juste)