Spalten einer Datei in neue Datei integrieren.

Diskutiere Spalten einer Datei in neue Datei integrieren. im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo ich habe folgendes Problem. Ich habe eine Datei mit ca. 39000 Zeilen und entsprechenden Infos. Nun möchte ich gerne von dieser Datei Die...

  1. #1 lightup, 28.01.2019
    lightup

    lightup Grünschnabel

    Dabei seit:
    28.01.2019
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo ich habe folgendes Problem.
    Ich habe eine Datei mit ca. 39000 Zeilen und entsprechenden Infos. Nun möchte ich gerne von dieser Datei Die Spalten 2, 3, 4, 5 und noch ein paar zusätzliche Spalten mit neuem Inhalt in einer neuen Datei hinten anfügen.

    Ich bin absolut nicht vom Fach und habe ein wenig mit awk herumprobiert. Kam aber nicht zum gewünschten Ergebnis.

    Ausschnitt aus der Original-Datei (oxylim.star) aus der die Spalten entnommen werden sollen:

    data_
    loop_
    _rlnImageName
    _rlnMicrographName
    _rlnDefocusU
    _rlnDefocusV
    _rlnDefocusAngle
    _rlnVoltage
    _rlnSphericalAberration
    _rlnAmplitudeContrast
    1@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    2@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    3@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    4@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    5@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    6@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    7@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    8@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    9@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1
    10@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs 4487 25039.3 24092.6 46.0700 300 2.0 0.1


    hier möchte ich die Spalten:
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4487 25039.3 24092.6 46.0700 300 2.2 0.1

    usw... rauskopieren und in die neue Datei anfügen. (Die Werte der Zahlen variieren im Verlauf der Datei. Sie sind also nicht komplett gleich.

    meine neue Datei (test.star) sieht zur Zeit so aus.

    data_
    loop_
    _rlnImageName
    _rlnMicrographName
    _rlnDefocusU
    _rlnDefocusV
    _rlnDefocusAngle
    _rlnVoltage
    _rlnSphericalAberration
    _rlnAmplitudeContrast
    000001@LimStack.mrcs
    000002@LimStack.mrcs
    000003@LimStack.mrcs
    000004@LimStack.mrcs
    000005@LimStack.mrcs
    000006@LimStack.mrcs
    000007@LimStack.mrcs
    000008@LimStack.mrcs
    000009@LimStack.mrcs
    000010@LimStack.mrcs
    ...

    Mein Ziel ist es folgendes zu erhalten

    data_
    loop_
    _rlnImageName
    _rlnMicrographName
    _rlnDefocusU
    _rlnDefocusV
    _rlnDefocusAngle
    _rlnVoltage
    _rlnSphericalAberration
    _rlnAmplitudeContrast
    000001@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000002@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000003@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000004@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000005@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000006@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000007@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000008@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000009@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    000010@LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    ....
    038032@LimStack.mrcs 5171 26601.1 25663.8 -11.8700 300 2.2 0.1


    bisher habe ich es nur geschafft die Spalten unter die Werte von test.star anzuhängen... aber nicht als Spalten hinter die eigentlichen Einträge

    Es wäre toll, wenn mir jemand helfen könnte...
    Vielen Dank schon mal

    Viele Grüße
     
  2. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.233
    Zustimmungen:
    17
  3. #3 hellfire, 29.01.2019
    Zuletzt bearbeitet: 29.01.2019
    hellfire

    hellfire Doppel-As

    Dabei seit:
    25.05.2016
    Beiträge:
    124
    Zustimmungen:
    14
    Wenn ich Deine Daten so sehe, dann ist das was effektiv anders ist, dieses hier:

    Original:

    Code:
    1@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs
    Verändert:

    Code:
    000001@LimStack.mrcs
    Alles andere (Felder hinten dran, Vorspannzeilen der Datei) bleibt gleich.

    Das sind zum einen mal führende 0-en. Und zum anderen ist es ein ersetztes Wort "LimStack.mrcs" - unbekannt woraus sich das ableitet. Ist das ein frei ausgewählter Wert?

    also mit awk wäre das...

    Code:
    awk 'match($1,/([0-9])@/0-9a-zA-Z]+/,matches) {       # Suche Zeilen mit Datenwerten, merke das erste Feld im matches-Array
      printf "%06d@LimStack.mrcs",matches[1]              # gib das erste veränderte 1. Feld aus
      $1=""                                               # Das erste Feld wurde neu geschrieben, Inhalt wird also erst mal gelöscht
      print $0                                            # gib den Rest aus (ohne das gelöschte Feld $1)
    }'
     
  4. #4 lightup, 29.01.2019
    lightup

    lightup Grünschnabel

    Dabei seit:
    28.01.2019
    Beiträge:
    2
    Zustimmungen:
    0
    die Werte 00001, 00002 vor dem @ beziehen dich auf Bilder die in der Datei LimStack.mrcs abgelegt sind. LimStack.mrcs enthält 38032 Bilder bzw. Informationen zu diesen Bildern (Indem Fall die Zahlen die am Ende stehen und die ich behalten möchte)

    Wo muss ich denn meine Datei bei deinem awk-Skript angeben? :-/

    Mein awk-Skript sah bisher so aus. (habe nun direkt den kompletten Pfad zu LimStack.mrcs genommen)

    awk '{if ($1!="C") {print $1"@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs", $2, $3, $4, $5, " 300 2.2 0.1"} }' < oxylim.star >> Test2.star

    wenn ich das ausführe kommt leider das raus:

    1@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    2@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    3@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    4@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    5@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    6@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    7@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    8@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1
    9@/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs@./project/moltierphys/Limulus_oxy_old/Relion/LimStack.mrcs 4487 25039.3 24092.6 46.0700 300 2.2 0.1

    hier wird einfach alles angehängt und nicht gegen @/data/home/haugwitz/Limulus/oxylim/oxylim.mrcs getauscht.

    Trotzdem schon mal vielen Dank für deine Hilfe

    Viele Grüße
     
  5. #5 hellfire, 29.01.2019
    hellfire

    hellfire Doppel-As

    Dabei seit:
    25.05.2016
    Beiträge:
    124
    Zustimmungen:
    14
    Na dann zeig doch mal ein paar Zeilen der Datei LimStack.mrcs und beschreibe wie oxylim.mrcs und LimStack.mrcs zusammenhängen.

    grundsätzlich mal so:

    manchmal auch so:
    Du kannst das awk-Programm auch so in eine Datei schreiben:

    Code:
    #/usr/bin/awk -f
    # awk programm hier hin
    ... und verwende bitte Code-Tags (Das ist unter dem Pluszeichen bei code zu finden), damit das einfacher lesbar ist.
     
  6. #6 Programmer78, 04.02.2019
    Programmer78

    Programmer78 Doppel-As

    Dabei seit:
    28.11.2007
    Beiträge:
    122
    Zustimmungen:
    3
    Ohne awk aber funktioniert bei mir...

    Code:
    count=$(egrep -c "[[:digit:]]@" oxylim.star) ; for i in $(seq 1 $count) ; do append=$(printf " " ; egrep "^$i@" oxylim.star | cut -d \  -f 2-8) ; j=$(printf "%06d" $i) ; k=$(egrep "^$j@" test.star) ; sed -i 's/'"$k"'/&'"$append"'/' test.star ; done
    
     
Thema:

Spalten einer Datei in neue Datei integrieren.

Die Seite wird geladen...

Spalten einer Datei in neue Datei integrieren. - Ähnliche Themen

  1. 2 Spalten in EINER Textdatei GETRENNT addieren

    2 Spalten in EINER Textdatei GETRENNT addieren: Hey, bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt...
  2. spalten einer csv-Liste filtern

    spalten einer csv-Liste filtern: Hallo Kommandozeilen-Liebhaber, ich bin ziemlich neu im shell-scripting, daher gibt's womöglich 'ne ganz einfache aber mir nicht bekannte...
  3. Komplette Spalten aus Datei löschen.

    Komplette Spalten aus Datei löschen.: Hallo, ich habe noch eine Frage. Und zwar habe ich eine .dat Datei. Diese Datei enthält 5 Spalten mit Werten. Ich würde gerne die vierte und die...
  4. Fedora-Entwickler möchte Systemd erneut aufspalten

    Fedora-Entwickler möchte Systemd erneut aufspalten: Der Fedora-Entwickler Zbigniew JÄ™drzejewski-Szmek, der unter anderem Co-Maintainer von Systemd für die Distribution ist, hat für Fedora 22 einen...
  5. Jede n-te Spalte auslesen, bzw bestimmte Spalten ausschließen

    Jede n-te Spalte auslesen, bzw bestimmte Spalten ausschließen: Moin, habe ne Datei von der ich nur jede n-te spalte auslesen möchte, bzw löschen möchte (konstant jede dritte Spalte soll raus um genau zu sein)....
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden