Ausgabe an einen String

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Standard, 15.03.2013.

  1. #1 Standard, 15.03.2013
    Standard

    Standard Grünschnabel

    Dabei seit:
    15.03.2013
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo Leute,

    ich bin noch eher Anfänger mit dem Skripten und habe diesbezüglich ein Problem.

    Folgendes habe ich ausgeführt:

    Code:
    [root@test tmp]# cat input
    A:2:3:4:5:6
    B:2:3:4:5:6
    C:2:3:4:5:6
    D:2:3:4:5:6
    [root@test tmp]# hostname >> test; cut -d: -f1,5 input |sed -n 1p >> test
    [root@test tmp]# cat test
    test
    A:5
    [root@test tmp]#
    Ich möchte jedoch als Ausgabe in der Datei folgendes haben:

    test;A:5

    wie kann ich den Inhalt immer an den String hängen und ein ";" dazwischen erzeugen?

    Viele Grüße
    Standard
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tgruene, 16.03.2013
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Hilft Dir der
    Code:
    --output-delimiter=STRING
    zu cut weiter?
     
  4. #3 bytepool, 16.03.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hej,

    Mit ">>" haengst du den Output an eine Datei an, was du in diesem Fall aber scheinbar eigentlich nicht willst (damit kriegst du jedenfalls nicht dein gewuenschtes Ergebnis).

    Eine ganz einfache Moeglichkeit ist die einzelnen Teile vom Ergebnis in Variablen zwischen zu speichern, und dann erst am Ende so in die Datei zu schreiben wie du's haben willst:
    Code:
    host=$(hostname)
    columns=$( cut -d: -f1,5 input | sed -n 1p )
    
    echo "$host;$columns" >> test
    
    @tgruene: Ich vermute du hast ungenau gelesen, ich sehe jedenfalls nicht was deine Antwort mit der Loesung zu tun hat. ;)

    MfG,
    bytepool
     
  5. #4 floyd62, 16.03.2013
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    nur als Ergänzung - die Ausgabe mehrerer Kommandos wie beschrieben zu einer Zeile zusammenzufassen, geht ggf. auch mit ()-Klammern und paste, also z.B.
    Code:
    (
    hostname
    cut -d: -f1,5 input | sed -n 1p
    ) |
    paste -s -d ';' - >test
    
    Ansonsten würde ich die cut/sed-Pipe noch umdrehen, um das Kommando, das die meisten Daten wegwirft, vorne stehen zu haben, und dem sed auch noch mitteilen, dass er aufhören kann, wenn er die gesuchte Zeile ausgegeben hat, also
    Code:
    sed -ne '1{p;q;}' input | cut -d: -f1,5
    
    Das spielt bei einer Test-Input-Datei mit 4 Zeilen wohl keine grosse Rolle, wenn es aber in der Realität irgendwann um 40000000 Zeilen geht, dann hat cut so viel weniger Stress ... :)

    Grüsse, A.
     
  6. #5 Gast123, 16.03.2013
    Zuletzt von einem Moderator bearbeitet: 16.03.2013
    Gast123

    Gast123 Guest

    Um die Fülle der Möglichkeiten nochmals zu erweitern:
    Code:
    [neumannr@thinkpad ~]$ echo -n "`hostname`;" >> test; cut --output-delimiter=":" -d: -f1,5 input | head -n 1 >> test
    [neumannr@thinkpad ~]$ cat test
    thinkpad;A:5
    
    oder zusammengefasst:
    Code:
    [neumannr@thinkpad ~]$ echo "`hostname`;`cut --output-delimiter=":" -d: -f1,5 input | head -n 1`" >> test
    [neumannr@thinkpad ~]$ cat test
    thinkpad;A:5
    
    und falls du das zeilenweise für das input file machen willst:
    Code:
    while read LINE; do echo "`hostname`;$LINE" | cut --output-delimiter=":" -d: -f1,5; done < input
     
  7. #6 Aqualung, 17.03.2013
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Bisschen übersichtlicher mit awk:

    Code:
    h=`hostname`; awk -F: '{print ENVIRON["h"]";"$1":"$5}' < input
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Ausgabe an einen String

Die Seite wird geladen...

Ausgabe an einen String - Ähnliche Themen

  1. Kurztipp: Unerwünschte grep-Ausgaben vermeiden

    Kurztipp: Unerwünschte grep-Ausgaben vermeiden: Selbst aus altbekannten Programmen kann man oft noch einiges mehr herausholen - man muss sich nur einmal gründlich mit ihnen auseinandersetzen....
  2. Ausgabe von mkdir -p wegwerfen

    Ausgabe von mkdir -p wegwerfen: Hallo, ich stehe gerade auf den schlauch. in meinen BASH Script lege ich mit mkdir -p ein verzeichnis an. Das Script gibt dann immer auf der...
  3. Unix Shell echo/ausgabe solange Bedingung ...

    Unix Shell echo/ausgabe solange Bedingung ...: Hallo liebe Unix User, da ich relativ neu bin, was Linux / Unix angeht stehe ich gerade komplett auf dem Schlauch! Problem: Aus mehreren...
  4. »Einführung in Tcl/Tk« in neuer Ausgabe

    »Einführung in Tcl/Tk« in neuer Ausgabe: Das Buch »Einführung in Tcl/Tk« wendet sich an Anfänger, die die Programmiersprache Tcl/Tk erlernen wollen. Der Titel kann kostenlos für die...
  5. PHP 6 oder 7: Debatte über die Versionierung der nächsten Ausgabe von PHP

    PHP 6 oder 7: Debatte über die Versionierung der nächsten Ausgabe von PHP: In der Community der Scriptsprache PHP, die zur Erstellung dynamischer Webseiten und Webanwendungen dient, wird gerade kontrovers diskutiert,...