Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

Auteur Topic: Een bepaalde rij cutten en tonnen  (gelezen 1173 keer)

Offline eclectica

  • Lid
  • Steunpunt: Nee
Een bepaalde rij cutten en tonnen
« Gepost op: 2011/10/03, 19:46:51 »
Ik ben op zoek naar een commando die een bepaalde rij cut en dan toont

Ik heb in een file(blabla.txt):

Jef jefke
jan jantje

ik wil enkel 'jef' tonen

ik dacht hieraan; awk < blabla.txt '{ print $1 }' | cut -d: -f1

maar hij toont dan ook 'jan'

thnx

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Re: Een bepaalde rij cutten en tonnen
« Reactie #1 Gepost op: 2011/10/03, 20:36:39 »
Om lijn x te printen:
sed -n 'xp'

Bijvoorbeeld:
sed -n '1p'
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline eclectica

  • Lid
  • Steunpunt: Nee
Re: Een bepaalde rij cutten en tonnen
« Reactie #2 Gepost op: 2011/10/03, 21:41:26 »
Om lijn x te printen:
sed -n 'xp'

Bijvoorbeeld:
sed -n '1p'
thnx! maar kan ik deze nu ook in een lus gebruiken en '1' vervagen door een variabele?
Ik heb het hier geprobeerd maar het lukte niet
let i=1;
while read line
do
 
 awk < users.txt '{ print $1 }' | sed -n '$ip'
 let i++;
done <users.txt
Hier krijg ik enkel dan 'p' te zien ...

Offline eclectica

  • Lid
  • Steunpunt: Nee
Re: Een bepaalde rij cutten en tonnen
« Reactie #3 Gepost op: 2011/10/03, 21:46:10 »
Om lijn x te printen:
sed -n 'xp'

Bijvoorbeeld:
sed -n '1p'
thnx! maar kan ik deze nu ook in een lus gebruiken en '1' vervagen door een variabele?
Ik heb het hier geprobeerd maar het lukte niet
let i=1;
while read line
do
 
 awk < users.txt '{ print $1 }' | sed -n '$ip'
 let i++;
done <users.txt
Hier krijg ik enkel dan 'p' te zien ...
Ok opgelost door het zo te doen quote bij p en niet bij variable
awk < users.txt '{ print $1 }' | sed -n $i'p'

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Re: Een bepaalde rij cutten en tonnen
« Reactie #4 Gepost op: 2011/10/04, 08:33:09 »
Om een variabele in een quote te krijgen, gebruik je dubbele quotes, i.e. "${i}p" (Die accolades zijn om aan te geven wat de naam van de variabele is, i dus, en niet ip)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline edehont

  • Lid
  • Steunpunt: Nee
Re: Een bepaalde rij cutten en tonnen
« Reactie #5 Gepost op: 2011/10/14, 20:14:44 »
Als ik het goed begrijp wil je van een bestandje zoals:

#blabla.txt
Jef Jefke
Jan Jantje

kunnen selecteren welke regel je print en van die regel dan het eerste woord.

Als je bijvoorbeeld de officiele naam van Jefke wilt opzoeken zou ik dat zo doen:
awk '/Jefke/{print $1}' blabla.txt
N.B.: jouw gebruik van cut snap ik niet, want je gebruikt cut -d: maar er zit helemaal geen ':' in je voorbeeldfile.
Als je het met cut wilt doen kan het ook, maar dan moet je ook grep gebruiken om de juiste regel te zoeken:
grep Jefke blabla.txt |cut -d' ' -f1Als je het met sed wilt doen moet je alles achter de eerste spatie weggooien:
sed -n '/Jefke/s/ .*$//p' blabla.txt
Mijn keuze zou zijn awk, dat biedt de meeste mogelijkheden om later meer functionaliteiten toe te voegen. Ingewikkelde dingen met sed vind ik persoonlijk een drama.

Werken met variabelen:
naam='Jantje'
awk -v n=$naam '/n/{print $1}' blabla.txt
Groeten,
Eric