Archief - Shell script vraagje

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Templar

Legacy Member
Ik ben aan een shell-scriptje bezig, maar ik zou de aantal lijnen van een datafile moeten hebben in bruikbare vorm...

Met het commando wc krijg ik het volgende:

$wc -l datafile
32 datafile


Ik zou dus enkel die 32 moeten hebben. Iemand een idee?

Goofy666

Legacy Member
$wc -l datafile > naam_van_file

Ik denk dat het met dit moet lukken (ben zelf niet zo'n grote kenner wat Linux betreft).

Met >> ipv > kunt ge bijschrijven bij het bestand, met > wis je eerst alles wat er al instaat.

Templar

Legacy Member
Nee, het is zo, ik moet het aantal lijnen van een datafile hebben als variabele in mijn script...

Goofy666

Legacy Member
Kunt ge dan niet hetzelfde doen, maar dan in uw script zetten, en die naam_van_file veranderen door uwe variabele?

Dus: $wc -l datafile > $variabele

hoe ge die 'datafile' dan wegkrijgt, weet ik niet meteen (bij shellscripts toch niet).

Templar

Legacy Member
Ik denk niet dat dat gaat,

maar zelfs: met het commando wc -l ... krijg ik te veel info

Ik heb enkel dat cijfer nodig en niet ook de naam van de file...

Skratz

Legacy Member
Originally posted by Templar
Werkt niet omdat er spaties zijn voor het getal.
dus dan pakt ge niet het eerste veld, maar het 4e :)
lines=$( wc -l quotes.dat | cut -d " " -f 4 )

Templar

Legacy Member
Originally posted by Skratz
dus dan pakt ge niet het eerste veld, maar het 4e :)
lines=$( wc -l quotes.dat | cut -d " " -f 4 )

Dan zit je in de problemen als het getal uit maar 2 cijfers bestaat ipv 3 of 4...

Trust me, dat van mij werkt ;)

futta

Legacy Member
Originally posted by Templar
Dan zit je in de problemen als het getal uit maar 2 cijfers bestaat ipv 3 of 4...

Trust me, dat van mij werkt ;)

met -c1-7 selecteer je gewoon tekens 1-7. je hebt dan de 4 spaties en 3 cijfers. maar als je meer dan 999 regels hebt, klopt je cijfer niet meer?

om de eerste blanco's weg te halen gebruik je sed:
wc -l file.wtf | sed 's/^ *//'

je commando wordt dan
wc -l file.wtf | sed 's/^ *//' | cut -d " " -f 1

met de -d " " bepaal je dat de spatie de delimiter is, met -f selecteer je veld 1, hoe kort of lang dat ook is.

en dat werkt wel altijd

uw betweter :doc:
frank

Templar

Legacy Member
Dat van mij werkt tot 9.999.999 entries

Maar dat laatste ziet er idd nog een net iets propere oplossing uit

Skratz

Legacy Member
kan er mij iemand vertellen waarom daar eigenlijk spaties voor staan en waarom dat er nooit evenveel zijn?

was me nog niet opgevallen, maar ik vind het behoorlijk raar.

futta

Legacy Member
Originally posted by Skratz
kan er mij iemand vertellen waarom daar eigenlijk spaties voor staan en waarom dat er nooit evenveel zijn? was me nog niet opgevallen, maar ik vind het behoorlijk raar.

omdat als je 'wc *' doet de cijfers mooi in kolommen komen veronderstel ik.. :crazy:

Garfje

Legacy Member
lines=$(wc -l $file | awk '{print $1}')

dit gaat ook:
lines=`awk 'END {print NR}' $file`


als je cut gebruikt is het denk ik -c1-8 dat normaal gebruikt wordt, maar niet 100% zeker van.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan