The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Linux-Distribution von Bash-Skript Samtim74 Shell Programmierung und Scripting 1 08-19-2008 03:04 AM
Perl-Code zu unterscheiden numerischen und nicht-numerische Eingabe Raynon Shell Programmierung und Scripting 11 08-04-2007 11:32 AM
wie numerische Art auf dem Feld Zeit rahulspatil_111 Shell Programmierung und Scripting 1 04-27-2007 12:52 PM
Sortieren (bash-Kommando) booboo Shell Programmierung und Scripting 5 03-31-2006 08:18 PM
Fließkomma-numerische Vergleiche in bash borncrazy Shell Programmierung und 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 04-27-2008
dlm1065 dlm1065 is offline
Registrierte Nutzer
  
 

Join Date: Apr 2008
Beiträge: 1
Hilfe newb auf Linux-und Bash-Skript müssen numerisch sortieren

Ich versuche, um automatisch die Einfuhr einer Reihe von MySQL-Datenbank-Dateien. Ich mache nun manuell und seine königliche Schmerzen.

Alle SQL-Dateien werden fortlaufend nummeriert in einem Format von 4 Zahlen unterstreichen Text mit Leerzeichen durch Unterstriche ersetzt.

Beispiel:
Zitat:
logon_updates/2334_third_file.sql
logon_updates/1234_first_file.sql
logon_updates/1345_second_file.sql
Es gibt 3 Datenbanken jeder Einrichtung in der gleichen Weise. Das Verzeichnis hat die Datenbank-Struktur-Datei höher Sequenz ersetzt unteren Sequenz. Jede Datenbank hat ihre eigenen Unterverzeichnis mit sequenziert aktualisiert die Dateien mit Nummern über die strukturierte Dateien müssen geladen werden in numerischer sequenziert. Es gibt doppelte Sequenznummern in der Aktualisierung dieser Verzeichnisse haben alle geladen werden, bevor die nächste Nummer.

Habe ich kann ich tun, um die richtige Struktur-Datei, da sie nicht über doppelte Anzahl.

Zitat:
list \u003d $ (find-name "* logon_structure.sql"-Druck)
for f in $ list;
tun
g \u003d $ (echo $ f | cut-b3-6)
if [$ g-ge $ LNUM], dann
LNUM \u003d $ g
fi
getan
Ich habe versucht den Code unten loszuwerden das Verzeichnis mit Namen geschnitten, aber sie sind in der falschen Reihenfolge, sie sind in alphabetischer Reihenfolge nicht numerisch.
Die Variable h hat sich die Zahl allein und g hat die volle Dateiname.
Zitat:
list \u003d $ (find logon_updates-name "*. sql"-Druck)
for f in $ list;
tun
g \u003d $ (echo $ f | cut-b15-255)
h \u003d $ (echo $ f | cut-b15-18)
if [$ h-gt $ LNUM], dann
echo $ g
fi

getan
Mir fehlt eine Menge Grundkenntnisse unter Linux, dass ich in einem DOS / Windows-Umgebung.

Ich habe man diesen Code so lange ich kann nicht sehen den Wald vor lauter Bäumen, wenn Sie wissen was ich meine. So irgendwelche Vorschläge, um mich auf der rechten Bahn Gedanken wäre sehr dankbar

Danke,
dlm1065

Zuletzt bearbeitet von dlm1065; am 04-27-2008 04:36 AM..
  #2 (permalink)  
Old 04-27-2008
Ära era is offline Forum Advisor  
Herder sinnlosen Katzen (Am Sabbatical)
  
 

Join Date: März 2008
Location: / es / ist / nur / bin / sh
Beiträge: 3652
Wenn Sie nur die Ausgabe finden Sie, wenn Sie nicht wirklich brauchen, um es in einer Variable.

Mein Vorschlag wäre, um die laufende Nummer und die Datenbank zu trennen Bereichen, numerisch zu sortieren und die laufende Nummer.


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

Wenn Sie sicher sind, dass dieser korrekt arbeitet (Ich habe keine Daten zu testen, auf), können Sie mit der Pipeline:


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

Wenn die Ausgabe finden ist ziemlich regelmäßig, vielleicht könnten Sie ein paar kluge Optionen, damit Sie, sich direkt zu sortieren, ohne die während Look. Vielleicht geben die Ausgabe finden durch sed vorübergehend regeln sie?

Vielleicht so etwas wie dies auch schon?


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


Zuletzt bearbeitet von ERA; 04-27-2008 auf 05:17 AM.. Grund: Ups, sort-t (nicht-d!)
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 12:07 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0