2016-09-28 8 views
0

Ich versuche ../ durch Null zu ersetzen, aber irgendwie funktioniert es nicht, obwohl ich Escape-Zeichen hinzugefügt habe.So ersetzen Sie Sonderzeichen in AWK

object_file_name = "c:/main/db/../../schema/schema_name/tables/dd3.tbl"; 
gsub(/"..\/"/, "", object_file_name); 
print object_file_name; 

Ausgang sollte sein: c:/main/db/schema/schema_name/tables/dd3.tbl

Kann jemand Rat?

+0

Wenn Sie sagen, 'versuchen, mit null' zu ersetzen ../ meinen Sie wirklich nur' zu entfernen versuchen ../'oder versuchst du, es durch einen NUL-Charakter oder etwas anderes zu ersetzen? –

Antwort

0

die Punkte entkommen zu

$ echo "c:/main/db/../../schema/schema_name/tables/dd3.tbl" | awk 'gsub(/\/\.\./,"")' 

c:/main/db/schema/schema_name/tables/dd3.tbl 
+0

'/ ..' == '../'? :/... –

+0

yeah, ich habe die Bestellung getauscht, es kann auch umgekehrt sein! Da ist es ein Wiederholungsmuster egal für das Endergebnis. – karakfa

+0

Vielen Dank Karakfa. es funktioniert super. – Nagma

0

Mit sed Sie könnte:

$ echo "c:/main/db/../../schema/schema_name/tables/dd3.tbl" | sed 's/\.\.\///g' 
c:/main/db/schema/schema_name/tables/dd3.tbl