Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Jozzi - 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:
#!/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:
#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!
-
#!/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:
#!/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"?
-
awk:n käytölle ei ole sen kummempaa syytä kuin että keksin että sillä saan tuon toimimaan, kiitosta vastauksesta, testaan nämä heti!