2016-11-22 5 views
0

I Dokumente morphologisch analysiert haben in dieser Form:Extrakt Strings aus einer Textdatei Fällen mit sed oder awk Unterscheidung

^Thus/Thus[ADV]+ADV$ ^an/an[ART]$ ^agnostic/agnostic[ADJ]+ADJ$ 
^is/be[V]+V+3sg+PRES$ ^someone/someone[PN]+INDEF$ ^who/who[PN]+WH$ 
^believes/believe[V]+V+3sg+PRES$ ^that/that[CNJ]+THAT$ ^we/we[PN]+PERS$ 
^do/do[V]+V+INF$ ^not/not[PART]$ ^and/and[CNJ]+COORD$ ^cannot/*cannot$ 
^know/know[V]+V$ ^for/for[PRP]$ 
^prove/prove[V]+V+INF$ ^that/that[CNJ]+THAT$ ^he/he[PN]+PERS$  
^doesn/*doesn$^'t/it[PN]+PERS$ ^exist/exist[V]+V+INF$ 
^I'/i'[V]+V$^ve/ve[V]+V+INF$ 
^didn/didn[V]+V$^'t/it[PN]+PERS$ 
^can/can[V]+V+INF$^'t/it[PN]+PERS$ 

(Case1) Die meisten der Wörter richtig analysiert erhalten, wie:

is --> ^is/be[V]+V+3sg+PRES$ 
Einige Wörter

(Case2) nicht erhalten erkannt, wie:

cannot --> ^cannot/*cannot$ 

(Case3) Und alle 'verbunden' Worte (tut nicht, nicht ..) wie folgt verarbeitet erhalten:

  • Das Wort zwischen / und [ für Case1
  • Das Wort:

    doesn't --> ^doesn/*doesn$^'t/it[PN]+PERS$ 
    I've --> ^I'/i'[V]+V$^ve/ve[V]+V+INF$ 
    didn't --> ^didn/didn[V]+V$^'t/it[PN]+PERS$ 
    can't --> ^can/can[V]+V+INF$^'t/it[PN]+PERS$ 
    

    I enthält ein neues Dokument erstellen möchten zwischen ^ und / oder * und $ für Case2

  • für Case3 bin ich nicht sicher, was ich will, wie die verarbeitete Form der meisten der Zeit saugt (aus linguistischer Sicht) .. Ich dachte nur der Anfang zwischen ^ und / nehmen, da die meisten der Zeit, die ich aus dem seltsamen Wort wissen, woher es kam ..

einige sed awk So (die einzige zwei, die ich weiß, würde glücklich sein, wenn es möglich ist) Skript, das alle Zeichenketten in analysierende Einheiten teilt und es dann für Case1 als Standard verarbeitet. Wenn die Zeichenfolge einen einzelnen -Prozess wie Case3 enthält und wenn sie einen Stern * wie Case2 enthält. Die Reihenfolge ist wichtig, da einige Fälle * und ' enthalten, dann sollte Case3 angewendet werden.

Ich habe absolut keine Ahnung, wie dies zu starten, so habe ich keinen Code zum Einstieg ..

Andere Vorschläge für Case3 willkommen sind, auch.

Hoffe jemand kann helfen!

Vielen Dank im Voraus.

EDIT

So sollte es so aussehen:

Thus an agnostic be someone who believe that we do not and cannot know 
for prove that he doesn exist I' didn can 
+2

Bitte zeigen Sie einige erwartete Ausgabe. –

+0

Diese Links können Ihnen helfen, [awk] (https://www.math.utah.edu/docs/info/gawk_toc.html) und [sed] (http://polymer.bu.edu/~fding) zu lernen/sedawk/index.htm) – Jdamian

Antwort

0

Wenn Sie immer das Wort zwischen ^ holen und /:

$ awk 'gsub(/\^|\/[^\$]+\$/,"")' foo 
Thus an agnostic 
is someone who 
believes that we 
do not and cannot 
know for 
prove that he 
doesn't exist 
I've 
didn't 
can't 
+1

Sie haben unerwünschte Zeichenfolgen in der Ausgabe: "ich bin" sollte nur ich sein – Matt

+0

@Matt Pfft, in einigen prähistorischen Version ...: D –

+0

das ist der Text, den ich morphologisch analysieren möchte, habe ich bereits das – Jakob

0

Mit sed, ich denke, man könnte tun Sie dies:

sed -r "s#[^/]+/\*?(\w+'?)\S*\\$ ?#\1 #g" foo 
Verwandte Themen