The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



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
Linux distro vanuit bash-script Samtim74 Programmeren en Shell Scripting 1 08-19-2008 03:04
Perl code te differentiëren numerieke en niet-numerieke invoer Raynon Programmeren en Shell Scripting 11 08-04-2007 11:32
hoe numeriek sorteren op veld de tijd rahulspatil_111 Programmeren en Shell Scripting 1 04-27-2007 12:52
Sorteren (bash commando) booboo Programmeren en Shell Scripting 5 03-31-2006 08:18 PM
Floating point numerieke comparisions in bash borncrazy Programmeren en Shell Scripting 2 03-27-2005 08:39 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-27-2008
dlm1065 dlm1065 is offline
Geregistreerde gebruiker
  
 

Join Date: april 2008
Krabbels: 1
helpen newb op linux en bash moet numeriek script sorteren

I am trying to setup automatisch de invoer van een reeks van mysql database bestanden. Ik doe nu handmatig en haar een koninklijke pijn.

Alle sql bestanden zijn sequentieel genummerd in een formaat van 4 nummers onderstrepingsteken tekst met spaties vervangen door onderstrepingstekens.

voorbeeld:
Citaat:
logon_updates/2334_third_file.sql
logon_updates/1234_first_file.sql
logon_updates/1345_second_file.sql
Er zijn 3 databases elke installatie op dezelfde manier. De belangrijkste directory heeft de database structuur bestand hogere sequentie vervanging lagere reeks. Elke database heeft zijn eigen submap met gefaseerde updates van de bestanden met getallen hoger dan de gestructureerde bestanden moeten worden geladen in numerieke gesequenced. Er zijn twee exemplaren volgnummers in de update abonneelijsten die allemaal moeten worden geladen voordat het volgende nummer.

Ik dacht dat ik dit kan doen om de juiste structuur bestand als zij geen dubbele cijfers.

Citaat:
lijst \u003d $ (find-name "* logon_structure.sql"-print)
for f in $ lijst;
doen
g \u003d $ (echo $ f | cut-b3-6)
if [$ g-ge $ lnum]; vervolgens
lnum \u003d $ g
fi
gedaan
Ik probeerde de onderstaande code het wegwerken van de directory naam met knippen, maar ze zijn in de verkeerde volgorde, ze zijn niet numeriek in alfabetische volgorde.
De variabele h is het aantal alleen en g is de volledige bestandsnaam.
Citaat:
lijst \u003d $ (find logon_updates-name "*. sql"-print)
for f in $ lijst;
doen
g \u003d $ (echo $ f | cut-B15-255)
h \u003d $ (echo $ f | cut-b15-18)
if [$ h-gt $ lnum]; vervolgens
echo $ g
fi

gedaan
Mis ik een stuk van de fundamentele kennis onder linux, dat had ik in een DOS / Windows-omgeving.

Ik ben op zoek naar deze code zo lang ik kan niet zien het bos de bomen, als je weet wat ik bedoel. Dus alle suggesties om me op de goede trein van gedachte zou worden zeer gewaardeerd

Bedankt,
dlm1065

Laatst gewijzigd door dlm1065; op 04.27.2008 04:36..
  #2 (permalink)  
Old 04-27-2008
tijdperk era is offline Forum Advisor  
Herder van Nutteloze Cats (On Sabbatical)
  
 

Join Datum: maart 2008
Locatie: / er / is / alleen / bin / sh
Berichten: 3652
Als u alleen gebruik maken van de output van een keer vinden, hoef je niet echt nodig om te zetten in een variabele.

Mijn suggestie zou zijn om het volgnummer en de database om velden te scheiden, en sorteert numeriek op het volgnummer.


Code:
find logon_updates -name "*.sql" -print |
while read f
do
  g=$(echo $f | cut -b15-)
  h=$(echo $f | cut -b15-18)
  echo $h:$g
done | 
sort -t : -k1n

Zodra u zeker weet dat deze correct werkt (ik heb niet de gegevens om te testen op), kunt u verder de pijpleiding:


Code:
... sort -t : -k1n |
cut -d: -f2- |
while read f; do
  sql PERFORM ACTS OF horror WITH "$f" USING BIG STICK
done

Als de output van vinden is vrij regelmatig, waarschijnlijk kon je een aantal handige opties die het mogelijk maken om je te passeren die rechtstreeks te sorteren zonder de tijdens het kijken. Misschien wordt de output van vinden via sed tijdelijk te regulariseren het?

Misschien zoiets als dit zou werken al?


Code:
find -name "*logon_structure.sql" -print |
sort -t / -k2n


Laatst gewijzigd door tijdperk; op 04.27.2008 05:17.. Reden: Oeps, sort-t (niet-d!)
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 05:25.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0