Letzte Woche habe ich versehentlich alle meine Saiten meines Eclipse-Projekts externalisiert. Ich muss das ändern und meine einzige Hoffnung ist sed. Ich habe versucht, Skripte zu erstellen, aber es ist mir missglückt, weil ich neu bei sed bin und das wäre eine sehr komplizierte Operation. Was ich tun muss, ist dies:Suchen und Ersetzen mit sed
Strings in class.java
Datei ist derzeit im folgenden Format (Methode) Messages.getString(<key>)
. Beispiel:
if (new File(DataSource.DEFAULT_VS_PATH).exists()) {
for (int i = 1; i <= c; i++) {
if (!new File(DataSource.DEFAULT_VS_PATH
+ Messages.getString("VSDataSource.89") + i).exists()) { //$NON-NLS-1$
getnewvfspath = DataSource.DEFAULT_VS_PATH
+ Messages.getString("VSDataSource.90") + i; //$NON-NLS-1$
break;
}
}
}
Der Schlüssel und passenden Zeichenfolgen werden in messages.properties
Datei in dem folgenden Format.
VSDataSource.92=No of rows in db =
VSDataSource.93=Verifying db entry :
VSDataSource.94=DB is open
VSDataSource.95=DB is closed
VSDataSource.96=Invalid db entry for
VSDataSource.97=\ removed.
key=string
Also muss ich die Java-Datei in diesem Format zurück:
if (new File(DataSource.DEFAULT_VS_PATH).exists()) {
for (int i = 1; i <= c; i++) {
if (!new File(DataSource.DEFAULT_VS_PATH
+ "String 2" + i).exists()) { //$NON-NLS-1$
getnewvfspath = DataSource.DEFAULT_VS_PATH
+ "String 1" + i; //$NON-NLS-1$
break;
}
}
}
Wie kann ich dies zu erreichen mit sed
? Oder gibt es einen leichteren Weg?
So vermute ich 'VSDataSource.89' ist' String 2' in Ihrem 'messages.properties'? Möchten Sie 'Messages.getString ('VSDataSource.xxx')' durch 'yyy' aus 'VSDataSource.xxx = yyy' in' messages.properties' ersetzen? –
@ mathematic.coffee ja. Der 'Schlüssel' muss nicht mit' VSDataSource' beginnen, sondern ist für jede Zeichenkette eindeutig. –
Verwenden Sie Java? Hier ist eine ähnliche Sache: http://stackoverflow.com/questions/4766602/un-externals-strings-from-eclipse-or-intellij. Anstatt die Zeichenfolgen in der Java-Datei zu erstellen, können Sie alle Dateien durchsuchen und eine Regex-Suche durchführen und ersetzen. –