我有一个名为messages.properties
的文件,其中包含语法为<key>=<string>
的行。每个key
都是唯一的,但string
不是。许多键可以具有相同的字符串。同样在同一文件夹中,我有一些java类从messages.properties
读取字符串。他们通过方法Messages.getString("<key>")
获取字符串。所以我需要做的是通过从Messages.getString("<key>")
读取它们的值,将java类中的"<key>"
转换为messages.properties
。这是来自@potong的sed在线人员。
sed 's|^\([^=]*\)=\(.*\)|s@Messages.getString("\1")@"\2"@g|;s/\\/\\\\/g' messages.properties |
sed -i -f - *.java
然而,问题是它对messages.properties
中的某些人无效。我该如何修改脚本来解决这个问题?这是一个相关的问题Search and replace with sed。
示例messages.properties
Sting.1=Str
Sting.2=String
Sting.3=String
Sting.4=Strring
Sting.5=Str
示例java类
System.Out.println(Messages.getString("Sting.1"));
System.Out.println(Messages.getString("Sting.2"));
System.Out.println(Messages.getString("Sting.3"));
System.Out.println(Messages.getString("Sting.4"));
System.Out.println(Messages.getString("Sting.5"));
需要java类
System.Out.println("Str");
System.Out.println("String");
System.Out.println("String");
System.Out.println("Strring");
System.Out.println("Str");
答案 0 :(得分:1)
实际问题是日食分裂
Messages.getString("String.3")
分为2行,
Messages
.getString("String.3")
所以这很有用。
sed 's|^\([^=]*\)=\(.*\)|s@.getString("\1")@"\2"@g|;s/\\/\\\\/g' messages.properties |
sed -i -f - *.java