2017-01-16 4 views
2

Wie alle Vorkommen von Zeichenfolge "???" einer Datei und speichern Sie es?Unix Entfernen Sie alle Vorkommen von Zeichen und speichern

Mein Ansatz so weit:

cat file.txt | sed -ie '/s/???//' file.txt 

Jedoch habe ich die folgende Fehlermeldung erhalten:

sed: -e expression #1, char 4: unknown command: `?' 
+0

@anubhava sein Teil des Dateiinhalts –

+1

Dann verwenden: 'sed 's/??? // g' file.txt' – anubhava

+2

@anubhava Bitte fügen Sie das als Antwort hinzu und betonen, dass die' Katze ... | ' sollte nicht benutzt werden :) . Das ist alles, was ich beitragen muss, und ist allein keine Antwort wert. Vielen Dank! – cxw

Antwort

3

können Sie diesen sed Befehl verwenden:

sed -i 's/???//g' file.txt 

Es gibt keinen Grund zu verwenden, cat hier als sed kann direkt auf einer Datei arbeiten und speichern i t in-line.

Beachten Sie auch, dass im Gegensatz zu anderen Regex-Varianten BRE (Grund Regular Expressions), die Motorstandard regex ist von sed nicht ? als spezielle Regex Metazeichen behandeln daher gibt es keine Notwendigkeit ? hier zu entkommen ist.

+1

Ich denke, es ist nicht nur * nicht notwendig, dem Fragezeichen zu entgehen, du musst sogar ** nicht entkommen. Ich bin nicht sehr erfahren in sed, aber aus [dieses Dokument] (https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html) schließe ich, dass die Flucht (mit Backslash vorangestellt) Fragezeichen, Sie würden es tatsächlich in einen Regexp-Operator verwandeln; zumindest gilt dies für GNU sed. – user1934428

+0

Ja für GNU sed dürfen wir das Fragezeichen im Standard-BRE-Modus nicht verlassen. – anubhava

Verwandte Themen