![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| comment sh pour exécuter une commande à partir d'un script csh | bonovox | De programmation et de script Shell | 2 | 06-25-2008 05:24 AM |
| Comment construire une commande dans une chaîne plutôt que d'exécuter la commande | littlejon | De programmation et de script Shell | 1 | 05-29-2008 09:05 PM |
| script shell pour l'utilisateur d'exécuter la commande | redtiger | De programmation et de script Shell | 1 | 04-30-2008 07:53 PM |
| exécuter le script ou pas exécuter | Kespinoza97 | De programmation et de script Shell | 4 | 06-23-2007 10:27 AM |
| Plz Help: Comment utiliser la commande d'écrire la commande à exécuter sur un autre terminal | Aashish | UNIX pour les nuls Questions et réponses | 2 | 03-03-2006 12:25 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
S'il vous plaît, aidez: Construction d'un sed de commande et l'exécuter dans un script
Je suis en train d'utiliser un tableau pour stocker certaines données (par exemple, les touches 47975081_1215781266128), on peut supposer qu'elle est essentielle à d'autres données.
Je veux extraire des données à partir d'un fichier sur la base d'un couple de clés (fourchette) et de stocker les données dans une variable en utilisant la commande suivante: sed -n '/ 47975081_1215781266128 /, / 42628155_1215781428374 / p' test1.txt Dans mon script, je construire un sed de commandement et de l'écrire sur un fichier temporaire en utilisant le code ci-dessous: Entre1 \u003d "$ (keys [$ i])" Range2 \u003d "$ (keys [$ i +1])" a \u003d "sed -n '/ " b \u003d"/,/" c \u003d "/ p" d \u003d "test1.txt" echo "$ a $ entre1 $ b $ $ $ c Range2 d"> temp.txt Cela fonctionne bien, il écrit le texte suivant à la chaîne de fichier temporaire: sed -n '/ 08465696_1215781522540 /, / 70225547_1215781581748 / p' test1.txt Ensuite, je grep ce fichier et d'affecter le contenu d'une variable sedcmd \u003d $ (grep sed temp.txt) Toutefois, la chaîne qui est extrait a d'autres caractères ci-joint, le grep extraits: sed -n''\''/ 08465696_1215781522540 /, / 70225547_1215781581748 / p '\''' test1.txt Il a ajouté:''\ 'avant le' / 08465 .... et \'' 'après le .... 48 / p' Est ce que quelqu'un peut me dire pourquoi s'il vous plaît? et comment je peux extraire ce qui est exactement dans le fichier temp.txt et exécutez-le. Fondamentalement, je veux construire une commande, l'exécuter et d'affecter le résultat contenu dans un tableau. |
|
||||
|
Je ne suis pas voir cela.
Voici le contenu de temp.txt: sed -n '/ 08465696_1215781522540 /, / 70225547_1215781581748 / p' test1.txt Voici mon script de test: Code:
#!/bin/ksh sedcmd=$(grep sed temp.txt) echo $sedcmd Code:
$./test sed -n '/08465696_1215781522540/,/70225547_1215781581748/p' test1.txt |
|
||||
|
Plus d'aide s'il vous plaît
Thanksk, il a été écrit, les guillemets dans le fichier. J'ai corriger le problème. Cependant, je suis maintenant confronté à une autre pour laquelle il mai être une simple explication. Quand je lance la commande:
cat test1.txt | $ ($ sedcmd)> temp2.txt où sedcmd \u003d sed -n '/ 08465696_1215781522540 /, / 70225547_1215781581748 / p' Je ne suis pas d'obtenir une sortie dans la temp2.txt. Quand je lance le script dans le déboguer des Etats Aucun fichier ou répertoire ' Le même message est affiché dans le débogage, même lorsque je cours: sed -n '/ 08465696_1215781522540 /, / 70225547_1215781581748 / p' test1.txt> temp2.txt Toutes les idées pourquoi? |
|
||||
|
La commande à exécuter semble OK. Voir ci-dessous j'ai joint le résultat de debug:
+ Entre1 \u003d 70225547_1215781581748 + \u003d Range2 + A \u003d 'sed -n ' + B \u003d /, / + C \u003d / p + Echo 'sed -n / 70225547_1215781581748 /, / / p ' + + Grep sed temp.txt Sedcmd + \u003d 'sed -n / 70225547_1215781581748 /, / / p ' + Chat test1.txt + + sed -n / 70225547_1215781581748 /, / / p + '<_05_1:MessageIdentifier> ERR: 70225547_1215781581748 </ _05_1: MessageIdentifier> '</ _05: ReceiveRequest> <? Xml' version \u003d "1.0" "encoding \u003d" UTF-8 "?> <Erreur: Excepti sur 'xmlns: error \u003d "hhtp/messages/exception/2006-06"' 'xmlns : xsi \u003d "http://www.w3.org/2001/XMLSchema-instance" '' SchemaVersion \u003d "1.0"> <error: Na moi> ABC </ error: Name> <error:Code> 001 </ error: Code> <erreur ETAIL> Une erreur s'est produitetout en essayant de traiter une demande de routage, voir la liste ci-jointe exception pour «det souffrance </ erreur ETAIL> <_05_1:MessageIdentifier> ERR: 70225547_1215781581748 </ _05_1: MessageIdentifier>: Aucun fichier ou répertoire |
|
||||
|
Le code ci-dessous fonctionne:
Entre1 \u003d "$ (keys [$ i])" Range2 \u003d "$ (keys [$ i +1])" a \u003d "sed -n / " b \u003d"/,/" c \u003d "/ p" echo "$ a $ entre1 $ b $ Range2 $ c"> temp1.txt sedcmd \u003d $ (grep sed temp1.txt) errordata \u003d $ ($ sedcmd <test1.txt) echo "$ errordata"> temp2.txt Cependant, je suis d'avoir à l'écho le contenu de la variable dans un fichier que je processus. Ce que je voudrais faire est d'envoyer les données de l'$ sedcmd <test1.txt à temp2.txt l'aide de: cat test1.txt | $ ($ sedcmd)> temp2.txt. Cependant, cela me donne "Aucun fichier ou répertoire" errorr ![]() |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|