сед
раствор. Может быть, это слишком сложно и неоптимально, но это работает. В качестве эксперимента :).
Он выполняет все замены в одном вызове sed
, выполняя одну большую последовательность команд, генерируемую использованием printf
и paste
. Я хотел разбить эту команду на многострочную для удобочитаемости, но не смог - она перестает работать потом. Итак - oneliner:
sed -i -r "$(paste -d'/' <(printf 's/%s\\b\n' G{1..229}) <(printf '%s/g\n' G{230..458}))" file.txt
Преобразуется в следующую команду sed
:
sed -i -r "s/G1\b/G230/g
s/G2\b/G231/g
s/G3\b/G232/g
s/G4\b/G233/g
...
s/G227\b/G456/g
s/G228\b/G457/g
s/G229\b/G458/g" file.txt
Объяснение
sed -i -r "$(
paste -d'/'
- соединяет левую и правую части (которые генерируются в 3,4 шага) косой чертой - /
и в результате получается так: s/G1b/G230/g
- делает левые части sed
заменить команду. Пример:s/G1b
, s/G2b
, s/G3b
, так далее.
b
- Соответствует границе слова; то есть он совпадает, если символ слева является символом «слова», а символ справа является «несловным» символом, или наоборот. Information- GNU sed, расширения регулярных выражений.
- делает правые части команды замены sed
. Пример:G230/g
, G231/g
, G232/g
, так далее.
)" файл.txt
- входной файл.Вход
var G1 = value;
G3 = G1 + G2;
G3 = G1 + G2
G3 = ${G1} + G2
var G2 = value;
var G3 = value;
G224 = G3 + G215;
G124 = G124 + G215;
G124 = G124 + G12;
var G4 = value;
var G5 = value;
var G6 = value;
var G59 = value;
var G60 = value;
var G156 = value;
var G227 = value;
var G228 = value;
var G229 = value;
Выход
var G230 = value;
G232 = G230 + G231;
G232 = G230 + G231
G232 = ${G230} + G231
var G231 = value;
var G232 = value;
G453 = G232 + G444;
G353 = G353 + G444;
G353 = G353 + G241;
var G233 = value;
var G234 = value;
var G235 = value;
var G288 = value;
var G289 = value;
var G385 = value;
var G456 = value;
var G457 = value;
var G458 = value;
acpi=force — это параметр загрузки, который указывает::
Активирует систему ACPI, даже если BIOS вашего компьютера более ранней версии, чем 2000. Этот параметр перезаписывает acpi=off и может также использоваться с текущим оборудованием, если поддержка ACPI не активирована, несмотря на apm=off.
Он переопределяет параметр acpi=off, а также переводит прерывание в режим опроса, что в конечном итоге уменьшает количество сбоев при инициализации драйвера из-за общих прерываний.
После внесения каких-либо изменений в /etc/default/grub необходимо запустить обновление -grub, чтобы оно вступило в силу при следующей загрузке.