Вы можете объединить все три команды в одно выражение. Вам нужно заменить все варианты 1
, за которыми следует либо 0
, либо 1
, затем x
, а затем - необязательный _64
. Это может быть выражено следующим расширенным регулярным выражением:
1[01]x(_64)*
[]
обозначает символьный класс , поэтому [01]
соответствует либо единице, либо нулю. Конструкция (foo) *
будет соответствовать 0 или более экземплярам foo
. Итак, (_ 64) *
будет соответствовать как строке _64
(и ее повторениям, таким как _64_64_64
), так и пустой строке. Это позволяет сопоставить как 11_x64
, так и 11x
, и когда это не так.
Итак, если мы объединим это в выражение sed
, мы получим:
sed -iE 's/1[01]x(_64)*/12_64/' config*