hur du tar bort text från linje som utgår pattern1 upp till linje innan pattern2? - UNIX och Linux Forums
The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Radera rad i textfil Berserk UNIX for Dummies Frågor & Svar 6 12-16-2008 03:44
Ta bort linje med matchande text och linje omedelbart efter orahi001 UNIX for Dummies Frågor & Svar 6 01-15-2008 12:34
Ta bort första raden från någon textfil? aungomarin Shell-programmering och Skript 5 05-16-2006 10:42
ta bort en linje som grundar sig på första tecknet i linje borncrazy UNIX for Dummies Frågor & Svar 2 12-06-2005 03:27
ta bort sista raden från textfil hcclnoodles Shell-programmering och Skript 4 06-25-2002 10:52

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 04-13-2008
repudi8or repudi8or is offline
Registered User
  
 

Join Date: april 2008
Inlägg: 11
Ta bort texten från rad som börjar pattern1 upp till linjen innan pattern2?

Min data är xml'ish (här är ett utdrag): --

<bag name\u003d"mybag1" version\u003d"1.0"/>
<contents id\u003d"coins"/>
<bag name\u003d"mybag2" version\u003d"1.1"/>
<contents id\u003d"clothes"/>
<contents id\u003d"shoes"/>
<bag name\u003d"mybag3" version\u003d"1.6"/>

Jag vill ta bort raden med mybag2 och dess innehåll (antal innehåll linjer kan variera). Så jag vill ta bort från mönstret mybag2 upp till (men inte) nästa "påsen namn" tag och resultera i: --

<bag name\u003d"mybag1" version\u003d"1.0"/>
<contents id\u003d"coins"/>
<bag name\u003d"mybag3" version\u003d"1.6"/>

Jag har försökt detta ett par olika sätt med sed och awk och har ännu inte hittat en lösning. Någon hjälp skulle uppskattas.
  #2 (permalänk)  
Old 04-13-2008
kholostoi kholostoi is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 6
Detta är min lösning:

--------- file: awk_tets --------------
BEGIN (flagga \u003d 0)
/ ^ <väska name \u003d "mybag2" / (flagga \u003d 1)
/ ^ <väska name \u003d "mybag3" / (flagga \u003d 0)
(If (flag \u003d\u003d 0) (print;))
---------------------------------------

på kommandoraden: $ awk-f awk_test your_data_file> resultat

Let's try it
  #3 (permalänk)  
Old 04-14-2008
robsonde robsonde is offline
Registered User
  
 

Join Date: Dec 2007
Inlägg: 162
Citat:
Ursprungligen postat av kholostoi View Post
Detta är min lösning:

--------- file: awk_tets --------------
BEGIN (flagga \u003d 0)
/ ^ <väska name \u003d "mybag2" / (flagga \u003d 1)
/ ^ <väska name \u003d "mybag3" / (flagga \u003d 0)
(If (flag \u003d\u003d 0) (print;))
---------------------------------------

på kommandoraden: $ awk-f awk_test your_data_file> resultat

Let's try it
Detta är vad jag tänkte också, problemet är att det inte Händel nästlade ceses alltför väl .....
  #4 (permalänk)  
Old 04-14-2008
repudi8or repudi8or is offline
Registered User
  
 

Join Date: april 2008
Inlägg: 11
Jag försökte att lösningen: --

me @ MyServer $ nawk 'BEGIN (flagga \u003d 0) / ^ <väska name \u003d "mybag2" / (flagga \u003d 1) / ^ <väska name \u003d "mybag3" / (flagga \u003d 0) (if (flag \u003d\u003d 0) (print;)) 'test2

<bag name\u003d"mybag1" version\u003d"1.0"/>
<contents id\u003d"coins"/>
<bag name\u003d"mybag3" version\u003d"1.6"/>

Det fungerar, men problemet är att den andra påsen namnet kan vara valfritt värde, dess inte specifikt "mybag3", så den andra mönstret måste vara mer allmänna "/ ^ väska name \u003d /

Så jag försökte med det också: --

me @ MyServer $ nawk 'BEGIN (flagga \u003d 0) / ^ <påse name \u003d "mybag2" / (flagga \u003d 1) / ^ <påse name \u003d / (flagga \u003d 0) (if (flag \u003d\u003d 0) (print; )) 'test2

<bag name\u003d"mybag1" version\u003d"1.0"/>
<contents id\u003d"coins"/>
<bag name\u003d"mybag2" version\u003d"1.1"/>
<contents id\u003d"clothes"/>
<contents id\u003d"shoes"/>
<bag name\u003d"mybag3" version\u003d"1.6"/>

Det misslyckades eftersom flaggan återställs direkt efter det bildades som mer allmänna mönstret också matchade mybag2 linjen.

Sedan bytte jag mönstret ordning och BINGO!

me @ MyServer $ nawk 'BEGIN (flagga \u003d 0) / ^ <påse name \u003d / (flagga \u003d 0) / ^ <påse name \u003d "mybag2" / (flagga \u003d 1) (if (flag \u003d\u003d 0) (print; )) 'test2 <väska

name \u003d "mybag1" version \u003d "1.0" />
<contents id\u003d"coins"/>
<bag name\u003d"mybag3" version\u003d"1.6"/>

Tack så mycket för att leda mig i rätt riktning kholostoi
  #5 (permalänk)  
Old 04-14-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
missbrukare
  
 

Join Date: Jan 2007
Ort: Варна, България / Milano, Italia
Inlägg: 2.879
Eller:

Kod:
awk '/^<bag name=/{f=0}$0~v{f=1}!f' v="mybag2" file
Använd nawk eller / usr/xpg4/bin/awk på Solaris.
  #6 (permalänk)  
Old 04-15-2008
repudi8or repudi8or is offline
Registered User
  
 

Join Date: april 2008
Inlägg: 11
mycket mer elegant, tack radoulov

Jag kommer att använda det
Closed Thread

Komihåglista

Taggar
sed radera linje, Solaris

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 04:35.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0