Ich möchte den Befehl sed verwenden, um einige Bindestriche in einer Zeichenfolge (innerhalb einer Datei) zu entfernen.
TEXT=abcdef-lalala-someText-yahoo
Nach der sed-Ausführung sollte diese Zeile folgendermaßen aussehen:
TEXT=abcdeflalalasomeTextyahoo
Danke im Voraus
Antworten:
Aufgrund Ihres weiteren Kommentars zu Nifles Antwort ist dies möglicherweise eher das, wonach Sie suchen. Es wird nur auf Zeilen gewirkt,
TEXT=
die von 4 '-' begrenzten Textsegmenten gefolgt werden .GNU sed verwenden ("TEXT" und "yahoo" als Konstante behandeln)
Oder mit GNU sed (den gesamten Text nach "=" als vairable behandeln)
Oder für die POSIX-Portabilität (Behandlung des gesamten Texts nach "=" als vairable):
quelle
Bitte schön:
quelle
sed -i 's/-//g' filename
ist, was es in der Datei tatsächlich ändern würde, es würde jedoch JEDES-
in der Datei entfernen , was möglicherweise nicht das ist, was Sie wollen.Hier sind meine zwei Cent ... Sie können die Übereinstimmung (TEXT =) vor dem Ersatzbefehl hinzufügen ... Einfach so:
Die Ergebnisse werden sein:
Der Ersatzbefehl wird nur ausgeführt, wenn er mit der ersten Klausel übereinstimmt, in diesem Fall mit "TEXT =". Ich denke, dass der Befehl einfacher und eleganter sein wird.
quelle