Frage

Ich habe versucht, ein Bash-Skript zu implementieren, die von wordnet der Online-Datenbank liest und haben sich gefragt, ob es einen Weg gibt eine Vielzahl von Textdateien mit einem Befehl zu entfernen.

Beispiel filedump:

**** Noun ****
(n)hello, hullo, hi, howdy, how-do-you-do (an expression of greeting) "every morning they exchanged polite hellos"
**** Verb ****
(v)run (move fast by using one's feet, with one foot off the ground at any given time) "Don't run--you'll be out of breath"; "The children ran to the store"
**** Adjective ****
(adj)running ((of fluids) moving or issuing in a stream) "as mountain stream with freely running water"; "hovels without running water"

Ich muss nur die Linien entfernen, die Aspekte der Grammatik beschreiben z.B.

**** Noun ****
**** Verb ****
**** Adjective ****

So, dass ich eine saubere Datei mit nur Definitionen der Worte:

(n)hello, hullo, hi, howdy, how-do-you-do (an expression of greeting) "every morning they exchanged polite hellos"
(v)run (move fast by using one's feet, with one foot off the ground at any given time) "Don't run--you'll be out of breath"; "The children ran to the store"
(adj)running ((of fluids) moving or issuing in a stream) "as mountain stream with freely running water"; "hovels without running water"

Die * Symbole um die grammatischen Begriffe Auslösung mich in sed auf.

War es hilfreich?

Lösung

Wenn Sie ganze Zeilen aus einer Datei nur auf den Inhalt dieser Zeilen basierend auswählen möchten, ist grep wahrscheinlich das am besten geeignete Werkzeug zur Verfügung. Allerdings sind einige Zeichen, wie Ihre Sterne, haben eine besondere Bedeutung grep, so sein müssen „entkommen“ mit einem umgekehrten Schrägstrich. Dies druckt nur die Zeilen mit vier Sternen Einstiegs- und Raum:

grep "^\*\*\*\* " textfile

Sie möchten jedoch die Linien zu halten, die nicht Spiel, das, so müssen Sie die -v Option für grep, die gerade das tut: druckt die Linien, die nicht entsprechen dem Muster.

grep -v "\*\*\*\* " textfile

Das sollte Sie geben, was Sie wollen.

Andere Tipps

sed '/^\*\{4\} .* \*\{4\}$/d'

oder etwas lockere

sed '/^*\{4\}/d'
 sed 's/^*.*//g' test | grep .
# awk '!/^\*\*+/' file
(n)hello, hullo, hi, howdy, how-do-you-do (an expression of greeting) "every morning they exchanged polite hellos"
(v)run (move fast by using one's feet, with one foot off the ground at any given time) "Don't run--you'll be out of breath"; "The children ran to the store"
(adj)running ((of fluids) moving or issuing in a stream) "as mountain stream with freely running water"; "hovels without running water"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top