Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: grep (search within a search)  (gelezen 681 keer)

pbecks

  • Gast
grep (search within a search)
« Gepost op: 2008/04/22, 10:04:50 »
Hallo,

Ik zoek een methode om binnen een deel van een tekst te kunnen zoeken (met grep bijv.)

Dit omdat de zoekterm die ik gebruik (het woord "slot") vaker voorkomt in de tekst en ik alleen die regels wil zien die binnen een bepaald deel van de tekst vallen.

Voorbeeld: ik wil uit de onderstaande tekst de regels waarin het woord "slot" voorkomt. (ik wil weten hoeveel geheugensloten mijn computer heeft en waarmee ze gevuld zijn) Met grep kan ik alle regels pakken waar het woord "slot" in voorkomt maar ik wil ze niet allemaal (alleen die, die vallen tussen de regels:   *-memory   EN   *-display:0 UNCLAIMED )

Hoe?

  *-cache:0
       description: L1 cache
       physical id: 12
       slot: CPU Internal
       size: 128KiB
       capacity: 128KiB
       clock: 1GHz (1.0ns)
       capabilities: internal write-back unified
  *-cache:1
       description: L2 cache
       physical id: 13
       slot: CPU Internal
       size: 2MiB
       capacity: 2MiB
       clock: 1GHz (1.0ns)
       capabilities: internal write-back unified
  *-memory
       description: System Memory
       physical id: 81
       slot: System board or motherboard
       size: 2GiB
     *-bank:0
          description: SODIMM Synchronous 667 MHz (1.5 ns)
          product: M4 70T2953EZ3-CE6
          vendor: CE00
          physical id: 0
          serial: 442E1434
          slot: DIMM 0
          size: 1GiB
          width: 64 bits
          clock: 667MHz (1.5ns)
     *-bank:1
          description: SODIMM Synchronous 667 MHz (1.5 ns)
          product: M4 70T2953EZ3-CE6
          vendor: CE00
          physical id: 1
          serial: 442E1368
          slot: DIMM 1
          size: 1GiB
          width: 64 bits
          clock: 667MHz (1.5ns)
  *-display:0 UNCLAIMED

grep (search within a search)
« Reactie #1 Gepost op: 2008/04/22, 11:10:52 »
is dit wat je wilt?
$ grep "slot" | grep "System" && grep "DIMM"

Offline Johan van Dijk

  • Administrator
    • johanvandijk
grep (search within a search)
« Reactie #2 Gepost op: 2008/04/22, 11:25:44 »
In het geval van lshw kan je beter met lshw al de resultaten filteren, en daarna pas met grep aan de gang.
Bijv:
sudo lshw -C memory |grep slot

pbecks

  • Gast
grep (search within a search)
« Reactie #3 Gepost op: 2008/04/23, 11:59:13 »
Hallo.

Uiteindelijk heb ik het zo gedaan (geen mooie oplossing maar het werkt).

#!bin/bash
sudo lshw -C memory -C network -C display -C multimedia > /home/patrick/scripts/HARDWARE/collect.txt
#memory
grep -C1 slot..DIMM /home/patrick/scripts/HARDWARE/collect.txt >  /home/patrick/scripts/HARDWARE/mem1.txt
sed '/--/d' /home/patrick/scripts/HARDWARE/mem1.txt > /home/patrick/scripts/HARDWARE/mem2.txt
sed '/serial:/d' /home/patrick/scripts/HARDWARE/mem2.txt > /home/patrick/scripts/HARDWARE/mem3.txt
sed  's/          //g' /home/patrick/scripts/HARDWARE/mem3.txt > /home/patrick/scripts/HARDWARE/mem4.txt
#video
grep -C2 *-display:0 /home/patrick/scripts/HARDWARE/collect.txt >  /home/patrick/scripts/HARDWARE/video1.txt
grep product /home/patrick/scripts/HARDWARE/video1.txt > /home/patrick/scripts/HARDWARE/video2.txt
sed 's/product://g' /home/patrick/scripts/HARDWARE/video2.txt > /home/patrick/scripts/HARDWARE/video3.txt
sed 's/        //g' /home/patrick/scripts/HARDWARE/video3.txt > /home/patrick/scripts/HARDWARE/video4.txt
#ethernet
grep [Nn]etwork /home/patrick/scripts/HARDWARE/collect.txt > /home/patrick/scripts/HARDWARE/net1.txt
sed '/\*-network/d' /home/patrick/scripts/HARDWARE/net1.txt > /home/patrick/scripts/HARDWARE/net2.txt
sed 's/product://g' /home/patrick/scripts/HARDWARE/net2.txt > /home/patrick/scripts/HARDWARE/net3.txt
sed '/description:/d' /home/patrick/scripts/HARDWARE/net3.txt > /home/patrick/scripts/HARDWARE/net4.txt
sed 's/        //g' /home/patrick/scripts/HARDWARE/net4.txt > /home/patrick/scripts/HARDWARE/net5.txt
#audio
grep -C1 "Audio device" /home/patrick/scripts/HARDWARE/collect.txt >  /home/patrick/scripts/HARDWARE/audio1.txt
grep product /home/patrick/scripts/HARDWARE/audio1.txt > /home/patrick/scripts/HARDWARE/audio2.txt
sed 's/product://g' /home/patrick/scripts/HARDWARE/audio2.txt > /home/patrick/scripts/HARDWARE/audio3.txt
sed 's/        //g' /home/patrick/scripts/HARDWARE/audio3.txt > /home/patrick/scripts/HARDWARE/audio4.txt
exit

output van de files mem4.txt video4.txt net5.txt audio4.txt:

slot: DIMM 0
size: 1GiB
slot: DIMM 1
size: 1GiB

Mobile GM965/GL960 Integrated Graphics Controller

82566MC Gigabit Network Connection
PRO/Wireless 4965 AG or AGN Network Connection

82801H (ICH8 Family) HD Audio Controller

pbecks

  • Gast
grep (search within a search)
« Reactie #4 Gepost op: 2008/04/23, 13:07:03 »
Laatste wijziging:

#!bin/bash
sudo lshw -C memory -C network -C display -C multimedia > /home/patrick/scripts/HARDWARE/collect.txt
#memory
cat /home/patrick/scripts/HARDWARE/collect.txt | grep -C1 slot..DIMM | sed -e '/--/d' -e '/serial:/d' -e 's/ //g'> /home/patrick/scripts/HARDWARE/mem4.txt
#video
cat /home/patrick/scripts/HARDWARE/collect.txt | grep -C2 *-display:0 | grep product | sed -e 's/product://g' -e 's/ //g'> /home/patrick/scripts/HARDWARE/video4.txt
#ethernet
cat /home/patrick/scripts/HARDWARE/collect.txt | grep [Nn]etwork | sed -e '/\*-network/d' -e 's/product://g' -e '/description:/d' -e 's/ //g' > /home/patrick/scripts/HARDWARE/net5.txt
#audio
cat /home/patrick/scripts/HARDWARE/collect.txt | grep -C1 "Audio device" | grep product | sed -e 's/product://g' -e 's/ //g' > /home/patrick/scripts/HARDWARE/audio4.txt
exit