Поскольку вы просили я хочу использовать bash
для него, вот попытка использования только родные операторы в нем; используя функцию regEx
с ее оператором ~
(поддерживается от bash 3.0
и далее).
Предположим, что ваш файл только одна строка в нем, вы можете сделать следующие шаги,
- Следующие команды можно запустить непосредственно из командной строки (или)
- наматывается его в сценарии оболочки с помощью
bash
she-bang (#!/bin/bash
).
Захват содержимого файла для regEx
с использованием <file
, в котором хранится полное содержимое файла в переменной.
fileContent=$(<file)
[[ $fileContent =~ .*24:([[:digit:]]+)-MM.* ]] && replacement="${BASH_REMATCH[1]}"
replaceValue=5555
printf "%s\n" "${fileContent/$replacement/$replaceValue}"
Для вашего входного файла, команды выдавать результат
22:50133-MM:MM1,52-MM:MM2;23:254940-MM:MM1,63-MM:MM2;24:5555-MM:MM1,65-MM:MM2;
Пожалуйста, обратите внимание на [редактирование-помощь] (http://stackoverflow.com/editing-help). – Cyrus
Я предлагаю использовать команду 'sed'' '': 's/regexp/replacement /'. См. 'Man sed'. – Cyrus