2016-06-01 8 views
0

Ich versuche eine einzelne Zeile in einer Textdatei zu bearbeiten, indem ich ein unnötiges Doppelzitat vor dem Namen lösche, zB" THE DELEON FAMILY DE. After the ändern sie es wie folgt aussehen sollte. dIE DELEON FAMILIE DEnicht abgeschlossen `s 'Befehlsfehler - versuche, zusätzliches Doppelzitat zu entfernen

Hier ist mein Code:

grep 'THE DELEON FAMILY DE' all_boros.txt | sed 's/"THE DELEON FAMILY DE/THE DELEON FAMILY DE' 

Dies ist der Fehler, den ich bekommen:

sed: -e expression #1, char 44: unterminated `s' command 
+0

sed 's/"THE DELEON FAMILIE DE/DER DELEON FAMILY DE/g' Daten –

+0

sed: kann Daten nicht lesen: Keine solche Datei oder Verzeichnis – user3062459

+0

sed 's/"DIE DELEON-FAMILIE DE/DIE DELEON-FAMILIE DE/g' all_boros.txt –

Antwort

3

Sie vermissen eine der letzten / im Substitutions Befehl:

s/"THE DELEON FAMILY DE/THE DELEON FAMILY DE/ 
#           ^Here 

Und Sie nicht grep überhaupt benötigen und Sie müssen nicht auf den Ersatz wiederholen:

Abhängig von Ihren Anforderungen möchten Sie vielleicht den g lobal Modifikator verwenden, dies wird den Ersatzbefehl matc machen h multiplizieren Zeiten für jede Zeile:

sed 's/"\(THE DELEON FAMILY DE\)/\1/g' all_boros.txt 

Und Sie können -i verwenden anstelle bearbeiten zu tun:

sed -i.bak 's/"\(THE DELEON FAMILY DE\)/\1/g' all_boros.txt 
# ^this will make a backup called all_boros.txt.bak while modifying the 
#  original file 
+1

Wenn Sie nicht 'grep' verwenden, müssen Sie die nicht übereinstimmenden Zeilen in Ihrem' sed' Programm unterdrücken. Wahrscheinlich ist der einfachste Weg, "-n" zu übergeben und dann 's /// p' (' p'rint-Modifizierer) zu verwenden. –

+0

@TobySpeight Das stimmt. Das ist mir durch den Kopf gegangen. Danke fürs klarstellen :-) – andlrc

2

Keine Notwendigkeit, grep und zu ersetzen, Sed pass auf mich auf t.

sed -i 's/"THE DELEON FAMILY DE/THE DELEON FAMILY DE/g' all_boros.txt 
+0

Ich habe es genau so versucht, wie du es geschrieben hast (kopiert und eingefügt), kein Grep. Aber das doppelte Zitat ist immer noch da. – user3062459

+1

Verwenden Sie '-i ', wenn Sie die Datei an Ort und Stelle ändern möchten. Andernfalls wird die geänderte Datei in stdout geschrieben. –

+0

jetzt versuchen, ich habe "i" hinzugefügt, so dass Änderungen in Datei geschrieben werden. –

Verwandte Themen