ubuntuusers.de

tr um eine Wert zu filtern

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo,

möchte aus Datei"$INFO10" die Anzahl der Zeilen abfragen, die Ausgabe schreibe ich dann in die Datei "$INFO12". Zeile 1 funktioniert soweit, die Ausgabe sieht dann z.B. so aus:

1 /tmp/osynco10.tmp

Bei Zeile 2 möchte erreichen, daß von der Ausgabe "1 /tmp/osynco10.tmp" nur die Anzahl der Zeilen übrig bleibt.

tr sollte doch das richtige sein, aber ich bekomme es nicht hin.

wc -l "$INFO10" | sudo tee "$INFO12"
tr "[0-9]" -c "$INFO12" | sudo tee "$INFO13"

Wie könnte die Lösung aussehen?

Mache ich es umständlich und es geht noch einfacher?

Grüße Nobuddy

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Ich würde jetzt sowas wie

1
wc -l "$INFO10" | cut -d " " -f1

machen, allerdings bin ich mir auch nicht ganz sicher ob ich die Frage recht verstanden habe.

Gruß, Christopher.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo Christopher,

Du hast meine Frage richtig verstanden und Dein Vorschlag konnte ich zu 100% verwerten. Ich habe dies so verwendet:

INF1=$(wc -l "$INFO10" | cut -d " " -f1)

Dies funktioniert prima, der Zeilenwert wird an $INF1 für weitere Verwertung übergeben. Wenn ich das richtig verstehe, schneidest Du ab dem Leerzeichen ab. Was bewirkt "-f1"?

Für einen Anfänger ist es nicht einfach, die Vielfalt der Scriptprogrammierung zu erkennen.

Ich bin dabei ein kleines Script zu schreiben, das mit Hilfe von zenity eine grafisches Oberfläche bieten soll.

Thema ist Synchronisation, dabei verwende ich rsync.

Bei rsync gibt es durch die Option "--files-from=$DATEI", die Möglichkeit ausgewählte Dateien in ein Verzeichnis zu synchronisieren.

Um zu unterscheiden, ob nur eine Datei oder mehrere Dateien für die Synchronisation ausgewählt wurde, habe ich mir dieses Hilfsmittel ausgedacht.

So kann ich dann mit:

if [ $INF1 = 1 ],then
    ...........
fi

festlegen, ob nur eine Datei, oder

if [ $INF1 != 1 ],then
    ...........
fi

mehere Dateien ausgewählt wurden.

Bestimmt gibt es auch dafür eine einfachere Lösung, aber ich möchte auch verstehen lernen, was ich tue und versuche nur dann, wenn ich nicht weiter komme suche ich Hilfe.

Wichtig ist für mich ist das Verstehen der Vorschläge und Denkanstöße ......

Danke für Deine Hilfe

Grüße Nobuddy

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Huhu Nobuddy,

Nobuddy schrieb:

Du hast meine Frage richtig verstanden und Dein Vorschlag konnte ich zu 100% verwerten. Ich habe dies so verwendet:

INF1=$(wc -l "$INFO10" | cut -d " " -f1)

Dies funktioniert prima, der Zeilenwert wird an $INF1 für weitere Verwertung übergeben. Wenn ich das richtig verstehe, schneidest Du ab dem Leerzeichen ab. Was bewirkt "-f1"?

Sofern ich das richtig verstehe, ist das die “range” der Zeichen die gesplittet werden, also wird nach jedem einzelnen Leerzeichen gesplittet.

Nobuddy schrieb:

Für einen Anfänger ist es nicht einfach, die Vielfalt der Scriptprogrammierung zu erkennen.

Ich bin dabei ein kleines Script zu schreiben, das mit Hilfe von zenity eine grafisches Oberfläche bieten soll.

Thema ist Synchronisation, dabei verwende ich rsync.

Bei rsync gibt es durch die Option "--files-from=$DATEI", die Möglichkeit ausgewählte Dateien in ein Verzeichnis zu synchronisieren.

Um zu unterscheiden, ob nur eine Datei oder mehrere Dateien für die Synchronisation ausgewählt wurde, habe ich mir dieses Hilfsmittel ausgedacht.

So kann ich dann mit:

if [ $INF1 = 1 ],then
    ...........
fi

festlegen, ob nur eine Datei, oder

if [ $INF1 != 1 ],then
    ...........
fi

mehere Dateien ausgewählt wurden.

Bestimmt gibt es auch dafür eine einfachere Lösung, aber ich möchte auch verstehen lernen, was ich tue und versuche nur dann, wenn ich nicht weiter komme suche ich Hilfe.

Wozu musst du überhaupt nachschauen wie viele Dateien syncronisiert werden? Ob du nun einmal --files-from="$DATEI" angibst oder mehrmals ist glaube ich rsync egal. Bin mir aber nicht 100% sicher 😉

Gruß, Christopher.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hi EnTeQuAk,

Wozu musst du überhaupt nachschauen wie viele Dateien syncronisiert werden? Ob du nun einmal --files-from="$DATEI" angibst oder mehrmals ist glaube ich rsync egal. Bin mir aber nicht 100% sicher 😉

Ich habe es so gelöst, daß ich durch die Abfrage

if [ $INF1 = 1 ],then

UND

if [ $INF1 != 1 ],then

erreiche, ob mit oder ohne die Option "--files-from=$DATEI" synchronisiert wird.

Danke und Grüße Nobuddy

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Nobuddy schrieb:

Hi EnTeQuAk,

Wozu musst du überhaupt nachschauen wie viele Dateien syncronisiert werden? Ob du nun einmal --files-from="$DATEI" angibst oder mehrmals ist glaube ich rsync egal. Bin mir aber nicht 100% sicher 😉

Ich habe es so gelöst, daß ich durch die Abfrage

if [ $INF1 = 1 ],then

UND

if [ $INF1 != 1 ],then

erreiche, ob mit oder ohne die Option "--files-from=$DATEI" synchronisiert wird.

Okay, aber da kommt nen ; und kein , hin, nicht das du darüber stolperst ☺

Gruß, Christopher.

Nobuddy

(Themenstarter)
Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Nein, habe es nur von oben kopiert, im Script ist es richtig und funktioniert auch soweit.

Kann sein, daß ich zu einem späteren Zeitpunkt nochmals Deine Hilfe brauche.

Werde dann aber mein Script hier veröffentlichen.

Experten wie Du werden dem dann den letzten Feinschliff geben.

Grüße Nobuddy

Antworten |