У меня есть данные в файле, который, как:Regex: Выполнение операций на соответствующих группах
...
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
. Можно ли выполнить операцию над согласованной группой, а затем использовать результат в подстановке.
Он заменяет все, что имеет только ')', но 'Position (' does not exists. – Ambrish
ok попробуйте обновленную команду awk. – anubhava