![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| XLC compilatie fout bij de behandeling van operator overloading | luop0812 | AIX | 1 | 04-09-2008 05:09 PM |
| perl: Bij het omgaan met bestanden die niet bestaan | joeyg | Programmeren en Shell Scripting | 2 | 02-20-2008 05:09 PM |
| tsch script probleem (met sed) | csnewbie84 | Programmeren en Shell Scripting | 10 | 05-02-2007 11:51 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Helpen bij het omgaan met arra
Ik ben readinga bestand lin-regel en op basis van een craeting arry unieke elemenst uit de tweede kolom van de regel. Maar toen ik coem uit de while-lus mijn array leeg raakt, kan een eny me vertellen wat ik verkeerd zou doen
#! / bin / bash logfile \u003d ". / mylog.dat" begin \u003d 100 einde \u003d"$(( $ begin + 1000))! d " index \u003d 0 Isthere \u003d 0 MOTOREN \u003d "" sed "$ begin, $ eind" $ logfile | while read line doen i \u003d `echo $ line | awk-F", " '(print $ 2)'` Isthere \u003d 0 voor het item in "$ (MOTOREN [@]}"; doen if [ "$ i" \u003d "$ item"], vandaar echo "reeds opgenomen daar" Isthere \u003d 1 pauze fi gedaan if [ "$ Isthere"-eq 0]; dan echo "Adding $ Isthere" MOTOREN [$ index] \u003d `expr $ i` index \u003d $ (($ index + 1)) fi # Echo $ line gedaan echo $ index $ (# MOTOREN [@]) ooit # howe op dit punt array is leeg for i in "$ (MOTOREN [@]}"; doen echo $ i gedaan |
|
||||
|
Je bedoelt dat ik moet veranderen onder lijn
sed "$ begin, $ eind" $ logfile | while read line aan exec <test.file terwijl gelezen lijn Maar ik wil niet dat het bestand niet lezen volledig, maar pas vanaf begin tot eind. |
|
|||||
|
Wijzig uw techniek om zich te ontdoen van de pijpleiding, verander je shell te ksh, of leven met het lege array. Dit zijn uw opties. Sorry, maar je kunt niet houden van de pijpleiding, bash, en het scala inhoud. Men heeft om te gaan. Hier is een simpel script om het probleem te illustreren ...
Code:
$ cat script2
#! /usr/local/bin/bash
echo "cat
dog
mouse
rabbit
lion
wolf
dog
bat
lion
hamster
rabbit
elephant
elephant
whale
cricket" > list.txt
index=0
cat list.txt | while read item ; do
array1[index]=$item
((index=index+1))
done
echo array1: ${array1[@]}
exec < list.txt
index=0
while read item ; do
array2[index]=$item
((index=index+1))
done
echo array2: ${array2[@]}
exit 0
$ ./script2
array1:
array2: cat dog mouse rabbit lion wolf dog bat lion hamster rabbit elephant elephant whale cricket
$
|
|
||||
|
Fantastisch, dat was nieuw voor te zijn, dacht ik aan het kwijtraken van het de "disk te schrijven" gebeurt, terwijl uit om het in een bestand.
sed -n "$ begin, $ eind" $ logfile> motoren exec <motoren terwijl gelezen lijn doen # Array invoegen gedaan Dank je wel, ik ben er zo aan gewend niet van dien aard dat bash, ksh niet gemakkelijk is voor mij nu te gebruiken. Het heeft niet de "auto voltooiing wanneer typen we iets en de de <tab> toetsaanslag |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|