2016-12-16 24 views
0

Ich habe eine Datei, die als Ausgabe für eine SQL-Abfrage generiert wird. Ich muss die Nullen in der Datei durch Leerzeichen ersetzen, so etwas wie sed -e"s/null//g" würde funktionieren.Sed ersetzen bestimmte Teilzeichenfolge

Es gibt jedoch eine gültige Zeichenfolge in der Form 'null /' (mit einem nachgestellten Schrägstrich), die nicht ersetzt werden sollte. Gibt es eine Möglichkeit, nur "Null" -Werte zu ersetzen, während "Null /" intakt bleibt?

Antwort

2

Die sed Einzeiler:

sed 's#null\([^/]\|$\)#\1#g' file 

sollte für Ihre Anforderung arbeiten.

Es sucht Muster: null and followed by a non-slash char (or EOL),

mit dem followed non-slash char ersetzen.

So wird null/ nicht berührt werden.

+0

Was passiert, wenn 'null' ist als das Ende einer Zeile? – mouviciel

+0

@mouviciel guter Punkt. hinzugefügt 'oder EOL' – Kent

+0

Perfekt! danke – Craig

0

Ich denke, dieser Befehl genug sein sollte:

sed -e "s/null[^/]//g" 
+1

das wird 'nullable' ändern ->' ble', aber ich denke OP erwartet 'fähige' – Kent

+0

Ich glaube nicht, dass OP ein Problem mit' null' hat, wenn es in einem Wort ist, aber das kann leicht behoben werden – bracco23