найти и заменить значение в строке текста

Как насчет s / \ ([0-9] + \) /./ g; s / ^ \. | \. $ // g ?

Ваша конструкция \ d не будет распознаваться некоторыми реализациями sed. Вышеупомянутое расширенное регулярное выражение Posix. Как вы знаете, должно работать .

Уловка в sed заключается в том, чтобы работать постепенно. Вы добились этого, заменив цифры в скобках; вы просто не понимали, что можете очистить результат с помощью второго регулярного выражения.

1
07.01.2015, 17:52
2 ответа

С perl:

perl -i -F: -lape '$F[3]-=5;$F[4]+=5;$_=join ":",@F' the-file

С sh (предполагая, что эти числа всегда десятичные целые числа без ведущих нулей):

IFS=: read -r a b c d e < the-file &&
  printf '%s\n' "$a:$b:$c:$((d-5)):$((e+5))" > the-file

С последними версиями GNU awk:

gawk -i inplace -F: -vOFS=: '{$4-=5;$5+=5}1' the-file
3
29.04.2021, 00:33
awk -F":" '{OFS=":"; print $1,$2,$3,$4-5,$5+5}' filename

Выход:

1314:Battery:1.90:45:35
6
29.04.2021, 00:33

Теги

Похожие вопросы