2017-11-28 7 views
0

Ich habe meinen Kopf gegen die Wand geschlagen, um zu versuchen, sed zu bekommen, um eine Datei zu suchen, einen Zeitstempel zu ersetzen.sed Befehl ersetzen durch regex

Beispiel Ersetzen von Strings (Datei):

<script src="<@ofbizContentUrl>/xxx/js/v6/jsfile.js?v=201711271300</@ofbizContentUrl>"></script> 

<script src="<@ofbizContentUrl>/xxx/js/v6/jsfile2.js?v=20171127245</@ofbizContentUrl>"></script> 

im Grunde möchte ich die 201.711.271.300 in den Beispielen mit dem aktuellen Zeitstempel ersetzen, die ich in einem variablen Zeitpunkt gespeichert haben. Die Daten im Beispiel unterscheiden sich von Fall zu Fall.

Ich habe versucht,

sudo sed -i "s/?v=.+?(?=<)/?v=${date}/g" file 

ohne Erfolg, auf 2 Stunden gehen jetzt

+0

Sie können dies mit weniger Kopfschmerzen mit Python in einigen Zeilen tun. Müssen Sie 'altes sed' benutzen? – user1767754

+2

'sed' unterstützt Lookahead Regex nicht – anubhava

+0

Ich denke, ich habe im Grunde kein Shell-Skript, das unsere nee Builds unserer Website implementiert, also habe ich versucht, es während des Build-Prozesses zu tun, aber ich denke, ich kann nur hinzufügen ein Python-Befehl in der SH-Skript, das mit dem Ersatz –

Antwort

2

dieses Probieren Sie eine

sed "s/?v=\([0-9]*<\)/?v=${date}</g" $file 

Es ein einfacheres Muster verwendet: alle Ziffern, bis Sie treffen a <. Ersetzen Sie sie durch Daten (und stellen Sie die < wieder her).

+0

dies funktioniert so viel Dank geht –