Kirjoittaja Aihe: grep + awk apuja vailla  (Luettu 3040 kertaa)

Jozzi

  • Käyttäjä
  • Viestejä: 38
    • Profiili
    • Ilmaista internetistä
grep + awk apuja vailla
« : 24.07.06 - klo:00.25 »
Terve!

Olen tässä työstänyt skriptiä joka ottaa grepillä yhdestä tidostosta halutun asian ja työntää sen eteenpäin, toisesta tiedostosta haetaan tuolla saadulla tiedostolla osumia...

Tähän saakka olen päässyt:

Koodia: [Valitse]
#!/bin/sh
cat db |grep `cat tietoja|grep $1|awk -F: -v OFS=: '{ print $1}'`

tämä toimii niin kauan kun tietoja-tiedostosta tulee vain yksi osuma joka löytyy db-tiedostosta, mutta jos tietoja tiedostossa on esim. 4 osumaa hakusanalle tuottaa se tuloksen:

Koodia: [Valitse]
#cat db |grep `cat tietoja|grep asia|awk -F: -v OFS=: '{ print $1}'`

grep: asia: Tiedostoa tai hakemistoa ei ole
grep: asia2: Tiedostoa tai hakemistoa ei ole
grep: asia3: Tiedostoa tai hakemistoa ei ole

Eli se herjaa noista 3:sta jota EI löydy, mutta se kiinnostavin, eli sitä yhtä osumaa EI näytetä lainkaan?

Kysyisin miten tuota voisi kehittää niin, että hallitsisi myös monen osuman tapauksia!

Kiitokaia jo etukäteen avuista!

Koodia: [Valitse]
« Viimeksi muokattu: 24.07.06 - klo:00.27 kirjoittanut Jozzi »
Ilmaista internetistä
http://www.luukku.org

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Re: grep + awk apuja vailla
« Vastaus #1 : 24.07.06 - klo:01.31 »
Koodia: [Valitse]
#!/bin/bash

cat tietoja | grep "$1" | awk -F: -v OFS=: '{ print $1}' | while read asia; do
    echo "asia: $asia"
    cat db | grep "$asia"
done

Jos halutaan välttää turhaa cat-komennon käyttöä niin voidaan loitsia lyhyemminkin:
Koodia: [Valitse]
#!/bin/bash

grep "$1" tietoja | awk -F: -v OFS=: '{ print $1}' | while read asia; do
    echo "asia: $asia"
    grep "$asia" db
done


Onko muuten joku syy miksi käytät tuossa awk:ta sen sijaan että sanoisit "cut -d: -f1"?

Jozzi

  • Käyttäjä
  • Viestejä: 38
    • Profiili
    • Ilmaista internetistä
Re: grep + awk apuja vailla
« Vastaus #2 : 24.07.06 - klo:12.34 »
awk:n käytölle ei ole sen kummempaa syytä kuin että keksin että sillä saan tuon toimimaan, kiitosta vastauksesta, testaan nämä heti!
Ilmaista internetistä
http://www.luukku.org