wie kann ich Artikelnamen in der Referenzenliste ändern?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von daria, 23.02.2007.

  1. daria

    daria Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo Leute
    kann mir jemand helfen?
    ich habe eine SEHR lange Lieste aus Referenzen.
    Die sehen so aus:

    % 0213264 (JID)
    @Article{pmid11027914,
    Author = "Hochberg, Y",
    Year = 1988,
    Title = "{{A} sharper Bonferroni procedure for multiple tests of significance}", Journal = "Biometrika",
    Volume = 75,
    Number = 4,
    Pages = "800--802"
    }

    % 0213264 (JID)
    @Article{pmid11038465,
    Author = "Hommel, G",
    Title = "{{A} stagewise rejective multiple test procedute
    based on a modified Bonferroni test}",
    Journal = "Scand J Statist",
    Year = 1988,
    Number = 75,
    Pages = "383--386"
    }

    soll aber so ausehen:

    % 0213264 (JID)
    @Article{Hoch1988,
    Author = "Hochberg, Y",
    Year = 1988,
    Title = "{{A} sharper Bonferroni procedure for multiple tests of significance}", Journal = "Biometrika",
    Volume = 75,
    Number = 4,
    Pages = "800--802"
    }

    % 0213264 (JID)
    @Article{Homm1988,
    Author = "Hommel, G",
    Title = "{{A} stagewise rejective multiple test procedute
    based on a modified Bonferroni test}",
    Journal = "Scand J Statist",
    Year = 1988,
    Number = 75,
    Pages = "383--386"
    }

    die "pmid*" Nummer muss ich durch die ersten 4 Buchstaben des Autors und Jahr ersetzen.
    Wie kann ich das machen?

    Grüsse
    Daria
     
  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. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Kannst du ein (Daten-)Vorher-Nacher Beispiel posten... Ist dann einfacher zu verstehen.

    Grüsse
    d22
     
  4. daria

    daria Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    3
    Zustimmungen:
    0
    ja klar

    oberer Teil ist vorher und der untere ist nachher
     
  5. #4 Wolfgang, 23.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Welche Shell verwendest du?
    Welches OS?
    Wenn du bash hast, schau dir mal IFS an und verwende ein while read....

    Oder gleich mit perl.

    Gruß Wolfgang
     
  6. #5 Xanti, 23.02.2007
    Zuletzt bearbeitet: 23.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Quick and dirty:

    Code:
    perl -00 -pe '($auth)=$_=~/Author = "([^,]{1,4})/; ($year)=$_=~/Year = (.*?),/; s/(\@Article\{).*/$1$auth$year,/' ref.txt
    
    Gruß, Daniel

    edit: Für inplace-Ändern den -i Flag benutzen:

    Code:
    perl -00 -pi -e '($auth)=$_=~/Author = "([^,]{1,4})/; ($year)=$_=~/Year = (.*?),/; s/(\@Article\{).*/$1$auth$year,/' ref.txt
    
     
  7. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Sorry habs nicht gesehen ;).
    Knifflig, aber Xanti hat das Problem ja schon gelöst. Ich glaub ich muss mich doch mal noch mit Perl beschäftigen ;)

    Ich muss sagen, ich bin immer wieder schwer beeindruckt, wie schnell das geht ;).

    Gruss
    d22
     
  8. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Perl ist für sowas optimal geeignet und auf jeden Fall "beschäftigungswert". :)
     
  9. #8 Wolfgang, 23.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Bei perlgolf hätte ich verloren. ;)
    Aber ich habe auch einen ..
    Code:
    perl -0\000 -an -e '@a=split"\n";$c=$1 if($a[2]=~/"(\w{4})/);$c.=(split /\s|,/,$a[6])[2];$a[1]="\@Article\{pmid"."$c";map{print "$_\n"}@a' test  
    Gruß Wolfgang
    PS Verneige mich tief vor Xanti
    Wer probiert das mit sed? *gg*
     
  10. #9 Xanti, 23.02.2007
    Zuletzt bearbeitet: 23.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ich dachte, für sed-Lösungen bist Du zuständig. ;)

    edit: Was mir aufgefallen ist: was ist eigentlich, wenn der Nachname weniger als 4 Buchstaben hat?
     
  11. #10 Wolfgang, 23.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Klar könnte man mein Array anonym machen, und split direkt in die Zuweisung setzen, das spart etliches, wird aber sicher total unverständlich.

    Was sed betrifft, lass ich dir heute den Vortritt. *g*

    Gruß und schönes Wochenende.
    Wolfgang
     
  12. #11 Xanti, 23.02.2007
    Zuletzt bearbeitet: 23.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Meine Lösung war da auch anfällig, hab sie auch noch schnell oben verbessert.

    Bezüglich sed: Ne danke, da passe ich. So fit bin ich nicht in sed. ;)

    edit: Ebenfalls ein schönes Wochenende!
     
  13. Anzeige

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

    daria Grünschnabel

    Dabei seit:
    23.02.2007
    Beiträge:
    3
    Zustimmungen:
    0
    habe ausprobiert ...

    habe das Erste ausprobiert, hat aber die neuen Artikelnamen nicht geschrieben.
    dieses funktioniert aber (bei mir):

    perl -00 -ne '($auth) = $_=~/[Aa]uthor =\s*[{"]([a-zA-Z]{1,4})/; ($year) = $_=~/[yY]ear =\D*(\d+)/; s/(\@Article\{).*,/$1$auth$year,/; print'

    Erlaubt "" und {} zum Einfassen der Einträge und funktioniert ab 1 Zeichen im Namen (habe einen davon)

    Danke für ihre Vorschläge.:)
     
  15. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ähm, hier Duzen wir uns. :D
     
Thema:

wie kann ich Artikelnamen in der Referenzenliste ändern?

Die Seite wird geladen...

wie kann ich Artikelnamen in der Referenzenliste ändern? - Ähnliche Themen

  1. Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?

    Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?: In mehreren Dateien ist immer mehrfach ein bestimmtes Wort enthalten, gefolgt von einem "=". Ich möchte mir die dahinter folgenden 10 Zeichen...
  2. Wie kann ich das RAM löschen?

    Wie kann ich das RAM löschen?: Wie kann ich das RAM löschen? Danke im Vorraus
  3. Nicht erkannte Zeichen nach Update

    Nicht erkannte Zeichen nach Update: Hi, nachdem ich mein Kali Linux geupdated habe, ist mir aufgefallen dass viele Zeichen auf verschiedenen Nutzeroberflächen nur fehlerhaft...
  4. Bq Aquaris M10 Tablet mit Ubuntu Touch kann vorbestellt werden

    Bq Aquaris M10 Tablet mit Ubuntu Touch kann vorbestellt werden: Seit dem gestrigen Ostermontag kann das erste Tablet mit Ubuntu Touch und Konvergenz vorbestellt werden. Weiterlesen...
  5. Ethernet wird nicht erkannt

    Ethernet wird nicht erkannt: Ich habe das Problem, dass die Netzwerk karte von keinem System mehr geladen wird. Vor zwei Tagen habe ich das Netzteil vom Pc, das etwa eine...