我的文件中有数据,如:
...
Position(123)
...
Position(234)
...
我想更新此文件,如:
...
Position(1230)
...
Position(2340)
...
我可以使用Java来做到这一点。像:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexGroupOperation {
public static void main(String[] args) {
String[] inputLines = new String[5];
inputLines[0] = "Some Random Text";
inputLines[1] = "Position(789)";
inputLines[2] = "Some More Random Text";
inputLines[3] = "Position(123)";
inputLines[4] = "Position(456)";
Pattern p = Pattern.compile("Position\\(([0-9]+)\\)");
for (String line : inputLines) {
Matcher m = p.matcher(line);
if (m.matches()) {
System.out.println("Position(" + (Integer.valueOf(m.group(1)) * 10) + ")");
} else {
System.out.println(line);
}
}
}
}
这里,我正在捕获我想要执行操作的字符串(组)部分。然后使用所需结果更新该组。
我想使用sed
做同样的事情。是否可以对匹配的组执行操作,然后使用替换结果。
答案 0 :(得分:0)
你可以尝试下面的awk命令。
$ awk -F[\(\)] '/[0-9]+/{var=$2;$2=var*10; print $1"("$2")"}!/[0-9]/' file
...
Position(1230)
...
Position(2340)
...
答案 1 :(得分:0)
使用awk:
awk -F 'Position\\(' 'NF>1{gsub(/.*/, "Position(" $2*10 ")")} 1' file
...
Position(1230)
...
Position(2340)
...
答案 2 :(得分:0)
sed 's/^Position([0-9]*/&0/' YourFile
如果是"只是"在位置(...)行的数量中添加0