SED commande ne fonctionne pas dans le script perl
Quand je suis à l'aide de "sed" en ligne de commande c'est un travail, mais pas inclus dans le script perl.
Un exemple est sed 's/\s+//g' aaa > bbb
mais dire que lorsque j'essaie d'appeler la même commande de script perl
$gf = `sed 's/\s\+//g' aaa > bbb` ;
le fichier de sortie reste le même que le fichier d'entrée!!!! S'il vous plaît suggérer.
- Pouvez-vous donner un exemple complet, y compris le script perl et les valeurs de la variable
aaa
- exactement comment il est entré? Vous savez que\s+
n'est pas le même que\s\+
, droit? - stackoverflow.com/questions/918128/...
- merci..je pense que la réponse suivante donnée ci-dessous est ce que je cherchais..
Vous devez vous connecter pour publier un commentaire.
En Perl, backticks ont la même évasion et l'interpolation des règles que les chaînes entre guillemets doubles: d'Une barre oblique inverse formant un inconnu code d'échappement oublie la barre oblique inverse, par exemple,
"\." eq "."
.Par conséquent, le code Perl
sorties
Si vous souhaitez intégrer que
sed
commande en Perl, vous avez pour échapper à l'inverses de sorte qu'ils atteignent lesh
ell:En fait, vous n'aurez pas de sortie en
$gf
comme vous rediriger la sortie vers un fichier. Nous pouvons juste faireou avec des guillemets simples:
qui maintient les barres obliques inverses.
Encore, c'est tout à fait inutile que Perl peut appliquer la substitution elle-même.
sed sed
ou fait une faute de frappe se faufiler dans? Si ce n'est une faute de frappe, pouvez-vous expliquer pourquoi deuxsed
s dans une rangée? En dehors de cela très agréable et très claire de la solution!Dans ces situations étranges, je m'assure que je suis sur le bon de commande. Je vais le construire, de le stocker, et de sortie de la commande afin que je puisse voir exactement ce que j'ai créé:
Si vous êtes en cours d'exécution
sed
de Perl, vous pourriez être faire mal depuis que Perl peut déjà faire tout ça.avez-vous
en haut de votre fichier?
vous pourriez avoir besoin de backticks pour exécuter la commande