The UNIX and Linux Forums  
Hello and Welcome-tól az Egyesült Államokat, hogy az UNIX és Linux Forums? Köszönjük, hogy meglátogatta és csatlakozik Globális Közösség.

Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Megközelíthetőség vonalak kezdődött egyezésű karakterláncok segítségével sed vagy grep a hurok? AMBER Shell programozás és Scripting 8 07-13-2009 06:26 AM
Grep és törlése vonalak kivételével vonalakat strings vj8436 Shell programozás és Scripting 14 04-17-2009 12:25 PM
Ha grep 10 sorok után egy karakterlánc egy txt fájlt. suman82 Shell programozás és Scripting 6 12-13-2008 01:08 AM
grep karakterlánc és egy néhány soros után ashterix Shell programozás és Scripting 7 12-07-2008 09:20 AM
grep string & n következő sorok ashterix Shell programozás és Scripting 8 11-21-2005 11:38 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 07-10-2009
bhagirathi bhagirathi is offline
Regisztrált felhasználó
  
 

Join Date: Jul 2009
Hozzászólások: 10
grep egy karakterláncot a sorok között 2 karakterláncok egy fájl

Szia,
Kérem, segítsen nekem a következő probléma:
Van egy xml fájlt a következő sorokkal
Kód:
<cisco:name>
  <cisco:mdNm>Cisco Device 7500 A Series</cisco:mdNm>
  <cisco:meNm>10.1.100.19</cisco:meNm>
  <cisco:ehNm>/shelf=1</cisco:ehNm>
      <cisco:subname>
         <cisco:sptp>Cisco PortA Series</cisco:sptp>
         <cisco:aliasNameList xsi:nil="true"/>
         <cisco:owner xsi:nil="true"/>
                      <cisco:subportname>
                 <cisco:cpt>Cisco SubPort B Series</cisco:cpt>
                 <cisco:aliasNamesubList xsi:nil="true"/>
                 <cisco:userLabel xsi:nil="true"/>
               </cisco:subportname>
       </cisco:subname>
           <cisco:subname>
         <cisco:sptp>Cisco PortAB Series</cisco:sptp>
         <cisco:aliasNameList xsi:nil="true"/>
         <cisco:owner xsi:nil="true"/>
                      <cisco:subportname>
                 <cisco:cpt>Cisco SubPort AB Series</cisco:cpt>
                 <cisco:aliasNamesubList xsi:nil="true"/>
                 <cisco:userLabel xsi:nil="true"/>
               </cisco:subportname>
       </cisco:subname>
</cisco:name>
<cisco:name>
  <cisco:mdNm>Cisco Device 7500B Series</cisco:mdNm>
  <cisco:meNm>10.1.100.20</cisco:meNm>
  <cisco:ehNm>/shelf=2</cisco:ehNm>
      <cisco:subname>
         <cisco:sptp>Cisco Port B Series</cisco:sptp>
         <cisco:aliasNameList xsi:nil="true"/>
         <cisco:owner xsi:nil="true"/>
                      <cisco:subportname>
                 <cisco:cpt>Cisco SubPort B Series</cisco:cpt>
                 <cisco:aliasNamesubList xsi:nil="true"/>
                 <cisco:userLabel xsi:nil="true"/>
               </cisco:subportname>
       </cisco:subname>
</cisco:name>
A Saját kód először lekérdezi a két karakterlánc <cisco:name> és </ cisco: név> és azt követően, hogy a gróf a grep <cisco:cpt>. és így tovább folytatni, amíg a végére kép


Kód:
#!/bin/sh
sed '/<\/cisco:name>/{G;}' test.xml >temp 

nawk 'BEGIN{RS=""} 
{ 
grep -c '<cisco:cpt>' print 


}' temp 
rm temp
Ezt a kódot nem, hogy az OP a
Az első <cisco:name> és </ cisco: név> loop kell adni 2 akkor a következő lenne 1

plz segít
  #2 (permalink)  
Old 07-10-2009
honglus honglus is offline
Regisztrált felhasználó
  
 

Join Date: Dec 2008
Hozzászólások: 44
Kód:
awk '{ if (  $0 ~ /<cisco:cpt>/  )  {i++} if ( $0 ~ /<\/cisco:name>/ ) {print i;i=0}}' test.xml
  #3 (permalink)  
Old 07-10-2009
bhagirathi bhagirathi is offline
Regisztrált felhasználó
  
 

Join Date: Jul 2009
Hozzászólások: 10
Szia Honglus,
Thanks it works fine. de nekem van egy query
ha már a keresés két vagy 3 szokások mint <cisco:cpt>, <cisco:mdNm>, <cisco:sptp> majd, hogyan lehet eljárni.
  #4 (permalink)  
Old 07-10-2009
honglus honglus is offline
Regisztrált felhasználó
  
 

Join Date: Dec 2008
Hozzászólások: 44
Idézet:
Originally Posted by bhagirathi View Post
Szia Honglus,
Thanks it works fine. de nekem van egy query
ha már a keresés két vagy 3 szokások mint <cisco:cpt>, <cisco:mdNm>, <cisco:sptp> majd, hogyan lehet eljárni.
kapcsolatot velük, vagy valami ilyesmi:
$ 0 ~ / (egy | kettő | három) /
  #5 (permalink)  
Old 07-10-2009
summer_cherry summer_cherry is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jun 2007
Helyszín: Kína Peking
Hozzászólások: 1.088
hivatalosabban, perl tudja kezelni a sok XML dokumentum elérhető modul.

Lehet, próbáld az alábbi eredmény
Kód:
use XML::Parser;
my $file = 'a.xml';
my ($flag,$index,@arr,%hash)=(0,-1);
sub start_handler
{
    my $expat = shift; 
    my $element = shift;
    if($element eq 'cisco:name'){
			$index++;
		}
		else{
			if($element eq 'cisco:cpt'){
				$flag=1
			}
			else{
				$flag=0;				
			}
		}
}
sub char_handler
{
    my ($p, $data) = @_;
    if( ($flag eq '1') and  !($data =~ /^\s*$/)){
    	$arr[$index]++;
    	$hash{$index}.="  ".$data;
    }
}
my $parser = new XML::Parser(ErrorContext => 2);
$parser->setHandlers(Start => \&start_handler,
                     Char  => \&char_handler);
$parser->parsefile($file);
for(my $i=0;$i<=$#arr;$i++){
	print $arr[$i],"\n";
	print $hash{$i},"\n";
	print "--------\n";
}
  #6 (permalink)  
Old 07-10-2009
bhagirathi bhagirathi is offline
Regisztrált felhasználó
  
 

Join Date: Jul 2009
Hozzászólások: 10
Én ugyanezt
Kód:
awk '{ if (  $0 ~ /<cisco:cpt> | <cisco:sptp>/  )  {i++} if ( $0 ~ /<\/cisco:name>/ ) {print  "cpt=" i;i=0}}' test.xml
De az eredmény hozzá. ezért javasoljuk, hogy Ön hogyan tud majd nyomtatni, hogy másképp
mint
cpt \u003d 1
sptp \u003d 2
  #7 (permalink)  
Old 07-10-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Sep 2006
Hozzászólások: 2.536
mamlasz
Kód:
awk 'BEGIN{ RS="</cisco:name>"}
{
  m=split($0,a,"\n")
  f=0
  for(i=1;i<=m;i++) {
    if(a[i] ~ /<cisco:cpt>/){
        f++    
    }
  }
  print f
}' file
Reply

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 10:44 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0