заменить несколько строк в файле на python3 [закрыто]

En mi caso, la máquina era una máquina virtual en un hipervisor proxmox y la tarjeta de red tenía una configuración de lan virtual (vlan )establecida en la etiqueta 30. Después de eliminar esta (sin etiqueta ), podría hacer ping a la otra máquina con éxito.

-1
07.12.2018, 08:27
3 ответа

Попробуйте это:

sed -r 's/^memberUid: (.*)/nisNetgroupTriple: (-,\1,)/' testfile2 
nisNetgroupTriple: (-,tony,)
nisNetgroupTriple: (-,jacob,)
nisNetgroupTriple: (-,zenny,)
nisNetgroupTriple: (-,helori,)
nisNetgroupTriple: (-,honies,)
nisNetgroupTriple: (-,hunter,)

Использование sed с поиском и заменой и группой захвата (.*). В строке замены мы просто создаем желаемый формат, а \1заполняет то, что было захвачено в скобках.

1
28.01.2020, 05:08

Поскольку вы просили дать ответ с использованием Python3, вот ответ с использованием регулярных выражений Python:

import re
f = open(testfile2).read()
re.sub(r'(memberUid)(\:\s)(\w+)',r'nisNetgroupTriple\2(-,\3,)',f)

Пояснение:

  • re— это модуль регулярного выражения Python, предоставляющий re.subметод, который заменяет шаблон другим шаблоном в предоставленной строке следующим образом :
    • re.sub(r'original-pattern', r'replacement-pattern', inputString)
  • Скобки, используемые в шаблоне, используются для захвата групп в исходном шаблоне . Например. в нашем случае мы захватили 3 группы :memberUid, :\sи \w+. Затем мы можем ссылаться на эти группы в нашем шаблоне замены как \1, \2и так далее.
1
28.01.2020, 05:08

Поскольку первая часть каждой входной строки всегда заменяется, sedявляется избыточным. Все, что вам нужно, это

awk '{print "nisNetgroupTriple: (-,"$2",)"}'
0
28.01.2020, 05:08

Теги

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