![]() |
|
|
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 aller de pointeur de fichier à une ligne de c | user_prady | High Level Programming | 7 | 03-27-2008 12:32 AM |
| retour de la ligne précédente | user_prady | De programmation et de script Shell | 12 | 12-18-2007 07:37 AM |
| comment aller à la ligne précédente vim | useless79 | UNIX for Advanced & Expert Users | 2 | 09-16-2007 09:10 AM |
| rechercher et d'extraire la ligne précédente dans le fichier | paulsew | De programmation et de script Shell | 2 | 02-23-2007 08:04 AM |
| Jour précédent la date en Perl? | rajus19 | De programmation et de script Shell | 4 | 07-18-2006 01:40 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Perl comment déplacer le pointeur à la ligne dans un fichier txt?
J'ai un fichier texte qui a des blocs de texte. Chaque bloc commence par # # # et se termine avec End_ # # #.
J'ai écrit un perl script à la recherche d'une chaîne à partir de la ligne 2 (ignorer toutes les lignes commençant par # # #) de chaque bloc si disponible, besoin d'imprimer l'ensemble de cette rue. Selon le fichier d'entrée ci-dessous, il sera imprimé blocs # 02, # 04, # 05. Voici ma question, je n'ai pas de problèmes correspondant aux SEARCH_STR mais, une fois jumelés, comment puis-je retourner lignes précédentes? par exemple dans le bloc n ° 02, correspondent à la ligne 3, mais j'ai besoin d'imprimer les lignes 1 et 2. Merci d'avance pour toute aide! Mon script: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d #! / 46020/local/bin /perl -w # if ($ # ARGV! \u003d 0) ( print "Vous devez fournir un critère de recherche. \ n"; sortie; ) my $ query \u003d $ ARGV [0]; my $ input \u003d "/ MyPath / inputFILE.txt"; my $ line; my $ tag \u003d 0; my @ results \u003d (); open (FILE, "<$ INPUT") or die "Can't open '$ ENTREE' file: $!"; while ($ line \u003d <FILE>) ( next if ($ line \u003d ~ / ^ # [0-9] [0-9] .* - / | | $ line \u003d ~ / ^ \ s *$/); if ($ line \u003d ~ / $ query / i) ( $ tag \u003d 1; ) if ($ line \u003d ~ / ^ End_ # / & & $ tag \u003d\u003d 1) ( push (@ results, $ line) if ($ tag \u003d\u003d 1); $ tag \u003d 0; ) push (@ results, $ line) if ($ tag \u003d\u003d 1); ) close (FILE); print "@ results \ n"; sortie; Inputfile: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d # 01 - bloc de ligne de départ, ici texte ici plus de texte ici plus de lignes plus de lignes plus de lignes End_ # 01 # 02 - bloc de ligne de départ, ici texte ici Cette ligne contient les SEARCH_STR et quelque chose plus de lignes plus de lignes End_ # 02 # 03 - bloc de ligne de départ, ici texte ici plus de texte ici plus de lignes plus de lignes plus de lignes End_ # 03 # 04 - bloc de ligne de départ, ici texte ici plus de lignes plus de lignes la SEARCH_STR est là et quelque chose texte ici plus de lignes plus de lignes plus de lignes End_ # 04 # 05 - bloc de ligne de départ, ici texte ici plus de lignes la SEARCH_STR est là et quelque chose plus de lignes End_ # 05 # 06 - bloc de ligne de départ, ici texte ici plus de texte ici plus de lignes plus de lignes plus de lignes End_ # 06 |
|
||||
|
Si Smiling_Dragons suggestion ne fonctionne pas, vous pouvez utiliser le Tie:: File module qui vous permet de lire et d'écrire dans un fichier comme un perl array. Voir les Tie:: dossier de documentation pour l'utilisation de détails. Il s'agit également d'un module de base, vous devez donc avoir déjà installé. Si vous êtes coincé, après retour.
|
|
||||
|
Tiens simplement à préciser, selon le inputFILE.txt, lorsque vous lancez le script avec la SEARC_STR il print # 02, # 04, # 05 pâtés de maisons. par exemple scriptname recherche.
Mon code en mesure d'imprimer les lignes suivantes correspondent plus à End_ # # #, mais j'ai besoin d'un moyen d'imprimer avant de pair dans ce bloc. Merci. |
|
||||
|
Oui, je pense que nous avons tous deux compris que cette exigence, et les deux suggestions peuvent être utilisés pour faire ce que vous voulez. Si vous êtes familier avec une boucle à travers perl tableaux en utilisant des indices: $ array [n], puis en utilisant Tie:: Le fichier sera assez simple une fois que vous avez lu la documentation.
S_M suggestion du lit le fichier en morceaux, et non pas ligne par ligne, et ressemble à cela devrait fonctionner même si le dernier match pourrait échouer s'il n'y a pas deux nouvelles lignes à la fin du fichier. Vous devrez l'essayer et voir ou peut-être qu'il est possible d'effacer cela. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|