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.
Попробуйте это:
sed -r 's/^memberUid: (.*)/nisNetgroupTriple: (-,\1,)/' testfile2
nisNetgroupTriple: (-,tony,)
nisNetgroupTriple: (-,jacob,)
nisNetgroupTriple: (-,zenny,)
nisNetgroupTriple: (-,helori,)
nisNetgroupTriple: (-,honies,)
nisNetgroupTriple: (-,hunter,)
Использование sed с поиском и заменой и группой захвата (.*)
. В строке замены мы просто создаем желаемый формат, а \1
заполняет то, что было захвачено в скобках.
Поскольку вы просили дать ответ с использованием 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)
memberUid
, :\s
и \w+
. Затем мы можем ссылаться на эти группы в нашем шаблоне замены как \1
, \2
и так далее. Поскольку первая часть каждой входной строки всегда заменяется, sed
является избыточным. Все, что вам нужно, это
awk '{print "nisNetgroupTriple: (-,"$2",)"}'