Toon posts:

opsplitsen van uitvoer

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedendag,

Ik moet uit een bestand een IP adres lezen. Dit is in eerste instantie niet zo'n probleem maar naast het IP adres moet ik ook nog een identiek nummer lezen. Deze twee moeten allebei als variabelen in een script gebruikt worden. Nu is mijn vraag, hoe kan ik de uitvoer van het script die het bestand uitleest
(nummer, ip adres) invoeren als variabelen. Ik gebruik RedHat 7.3 en wil het liever beperken tot de BASH.

Alvast bedankt.

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Een identiek nummer? Identiek aan wat, het IP-adres? Die heb je dan toch al :?
Heb je een voorbeeldje?

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


  • Wilke
  • Registratie: December 2000
  • Laatst online: 19:14
Doe eens de inhoud van die file waar je het uit moet lezen.....

Ennuh, de Bash Programming - Introduction HOWTO en de Advanced Bash-Scripting HOWTO al gevonden en gelezen?

Verwijderd

Topicstarter
Alvast bedankt voor de howto's ik zal ze zo goed doornemen.

Het bestand bestaat uit een filliaalnummer en een ip adres. Het filliaalnummer staat al in het bestand en is makkelijk om te gebruiken als ik foutberichten wil loggen. Dan kan er namelijk makkelijk gekeken worden welk filliaal de error geeft

De opbouw ziet er zo uit.

0001 xxx.xxx.xxx.xxx
0002 xxx.xxx.xxx.xxx.
etc.
etc.

Het belangrijkste is dus dat ik 2 gegevens krijg en deze allebei wil bombarderen tot variabellen.

  • Wilke
  • Registratie: December 2000
  • Laatst online: 19:14
OKee, dat is dus best makkelijk (als je het eenmaal weet), je moet die HOWTO's maar eens lezen, en een keer een boek kopen waarin de standaard UNIX-commando's worden uitgelegd.

In dit geval kun je bijvoorbeeld scheiden op de 'spatie' tussen de twee delen:

code:
1
2
3
4
5
6
7
#!/bin/bash

while read line; do
  filiaalnummer=`echo $line | cut -d\  -f1`
  ipadres=`echo $line | cut -d\  -f2`
  # Hier commando's die je wil uitvoeren, waarbij die variabelen nodig zijn...
done; < invoer-file           [als je hier ipv 'invoer-file' '$1' zet, kun je de filename als argument geven]


Let op dat er 2 spaties staan tussen -d\ en -f, misschien is dat in HTML weergave niet duidelijk te zien :P

Lees vooral de manpages van cut, paste, wc, awk, sed e.d. maar eens door.

Wil je ietwat ingewikkelder dingen maken dan is perl vaak een beter keus, bash script heeft de neiging snel onleesbaar te worden ;)

  • qless
  • Registratie: Maart 2000
  • Laatst online: 17:46

qless

...vraag maar...

Meestal kun je in BASH vars zo gebruiken

>bla.sh 0001 192.168.0.1

----bla.sh------
prompt $1
promtp $2
--------
geeft:
0001
192.168.0.1


enz

Website
Vliegende camera's: Air 3s, Mini 4 Pro, Avata 2
Landbased camera's: Canon R6, Canon 5d2
Objectieven: 8 fisheye, 14f2.8, 24f2.8, 50f1.8, 135f2, 17-40f4, 24-105f4, 70-300f4-5.6, 150-600f5-6.3, 25f2.8-2.5x-5x


Verwijderd

Topicstarter
Enorm bedankt jongens,

Ik heb het met AWK opgelost, de code is alsvolgt:
code:
1
2
3
4
5
6
7
cat bestand | while read line
do
var1='echo $line | awk`{print $1}`'
var2='echo $line | awk`{print $2}`'
echo "filiaalnummer =" $var1
echo "Ip adres =" $var2
done


de uitvoer is dan:
[uitvoer]
filiaalnummer = 0001
Ip adres = xxx.xxx.xxx.xxx
etc....
[/uitvoer]
Pagina: 1