/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Klippe en blok ud af en text-fil
Fra : Ole Hansen


Dato : 30-12-04 12:09

Hej,

Jeg har en konfigurationsfil (fra en Cisco-router), hvor jeg gerne vil
have pillet en bestemt blok ud af.. Hvordan gør man det? Sh eller Perl
er hip som hap :)

Hvis jeg f.eks. vil klippe alt om "interface Serial0" og de
efterfølgende linier til afslutningen med !..

interface Ethernet1
decription bla bla
ip address 1.2.3.4
!
interface Serial0
description bla blah
ip address 4.3.2.1
!

--
Ole Hansen

 
 
Michael Knudsen (30-12-2004)
Kommentar
Fra : Michael Knudsen


Dato : 30-12-04 13:23

Ole Hansen wrote:
> Jeg har en konfigurationsfil (fra en Cisco-router), hvor jeg gerne vil
> have pillet en bestemt blok ud af.. Hvordan gør man det? Sh eller Perl
> er hip som hap :)

awk er din bedste ven.

> Hvis jeg f.eks. vil klippe alt om "interface Serial0" og de
> efterfølgende linier til afslutningen med !..
>
> interface Ethernet1
> decription bla bla
> ip address 1.2.3.4
> !
> interface Serial0
> description bla blah
> ip address 4.3.2.1
> !

   /^interface Serial0$/,/^\!$/ { print;}

Det burde goere det, men jeg har ikke lige testet det. Koer det saaledes:

   awk '/^interface Serial0$/,/^\!$/ { print;}' fil

Du kan ogsaa droppe fil-parameteren og bruge stdin.

Mvh. Michael.
--
Rumour is information distilled so finely that it can filter through
anything.
-- (Terry Pratchett, Feet of Clay)

Ole Hansen (30-12-2004)
Kommentar
Fra : Ole Hansen


Dato : 30-12-04 13:56

Michael Knudsen <ether@cs.auc.dk> writes:

> awk er din bedste ven.

Jeg må snart ha' taget mig sammen til at læse seriøst om den :)

>    /^interface Serial0$/,/^\!$/ { print;}
>
> Det burde goere det, men jeg har ikke lige testet det. Koer det saaledes:
>
>    awk '/^interface Serial0$/,/^\!$/ { print;}' fil
>
> Du kan ogsaa droppe fil-parameteren og bruge stdin.

Det ser vældig fint ud.. Men den gør, det modsatte af, hvad jeg
ønskede - det var nok lidt uklart formuleret.. :) Jeg vil fjerne
blokken fra filen ikke finde den frem..

> Mvh. Michael.

--
Ole Hansen

Michael Knudsen (30-12-2004)
Kommentar
Fra : Michael Knudsen


Dato : 30-12-04 23:41

On 2004-12-30, Ole Hansen <moped@get2net.dk> wrote:
>>    /^interface Serial0$/,/^\!$/ { print;}
>>
>> Det burde goere det, men jeg har ikke lige testet det. Koer det saaledes:
>>
>>    awk '/^interface Serial0$/,/^\!$/ { print;}' fil
>>
>> Du kan ogsaa droppe fil-parameteren og bruge stdin.
>
> Det ser vældig fint ud.. Men den gør, det modsatte af, hvad jeg
> ønskede - det var nok lidt uklart formuleret.. :) Jeg vil fjerne
> blokken fra filen ikke finde den frem..

Ehm, proev dette saa:

   /^interface Serial0$/,/^\!$/ { next;}
   { print;}

Kom det i en fil og koer med ``awk -f script datafil''.

Mvh. Michael.
--
Rumour is information distilled so finely that it can filter through
anything.
-- (Terry Pratchett, Feet of Clay)

Ole Hansen (03-01-2005)
Kommentar
Fra : Ole Hansen


Dato : 03-01-05 08:52

Michael Knudsen <e@miracle.mongers.org> writes:

> > Det ser vældig fint ud.. Men den gør, det modsatte af, hvad jeg
> > ønskede - det var nok lidt uklart formuleret.. :) Jeg vil fjerne
> > blokken fra filen ikke finde den frem..
>
> Ehm, proev dette saa:
>
>    /^interface Serial0$/,/^\!$/ { next;}
>    { print;}
>
> Kom det i en fil og koer med ``awk -f script datafil''.

Snedigt! Now I'll go RTFM :)

> Mvh. Michael.

--
Ole Hansen

Michael Knudsen (03-01-2005)
Kommentar
Fra : Michael Knudsen


Dato : 03-01-05 13:58

On 2005-01-03, Ole Hansen <moped@get2net.dk> wrote:
> Snedigt! Now I'll go RTFM :)

Dvs. det virkede?

Jeg mindes, at manualsiden til awk desvaerre ikke er ret grundig, men
hvis man lige forstaar det grundliggende i sproget (og lidt regulaere
udtryk), kan man loese _mange_ opgaver. Det samme kan man med Perl, men
jeg finder awk en del lettere at _laese_.

Jeg kan anbefale ``sed and awk'' fra O'Reilly -- saa faar du samtidig
en god bog om sed, en introduktion til regulaere udtryk og de forskellige
forskellige former (basic og extended regular expressions). Desuden faar
man en forklaring paa, hvorfor grep hedder grep.

Mvh. Michael.
--
Rumour is information distilled so finely that it can filter through
anything.
-- (Terry Pratchett, Feet of Clay)

Ole Hansen (03-01-2005)
Kommentar
Fra : Ole Hansen


Dato : 03-01-05 14:18

Michael Knudsen <e@miracle.mongers.org> writes:

> On 2005-01-03, Ole Hansen <moped@get2net.dk> wrote:
> > Snedigt! Now I'll go RTFM :)
>
> Dvs. det virkede?

Jup.. Helt efter hensigten..

> Jeg kan anbefale ``sed and awk'' fra O'Reilly -- saa faar du samtidig
> en god bog om sed, en introduktion til regulaere udtryk og de forskellige
> forskellige former (basic og extended regular expressions). Desuden faar
> man en forklaring paa, hvorfor grep hedder grep.

Den ryger på ønskelisten :)

> Mvh. Michael.

--
Ole Hansen

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste