Как заменить строку текста с входом из другого файла

Я работаю над сценарием для конфигурирования сервера. В основном сценарий устанавливает несколько сервисов и копирует конфигурационные файлы в поместить.

Я хотел бы заменить имя пользователя в одном из конфигурационных файлов с содержанием другого файла. Входной файл является одной строкой текста, который содержит имя пользователя. Файл конфигурации имеет несколько строк текста, но только одна строка относится к имени пользователя.

Как я заменяю имя пользователя файла конфигурации с именем пользователя, сохраненным во входном файле?

0
задан 27 October 2014 в 02:54

2 ответа

Принятием фактического имени пользователя в целенаправленном файле предшествуют USER: (в противном случае измените его в главном разделе сценария), вот решение для Python сделать задание.

Просто скопируйте сценарий в пустой файл, сохраните его как replace_username.py и выполненный это с исходным файлом (с корректным именем пользователя) и целевой файл как аргументы:

python3 /path/to/replace_username.py <sourcefile> <destination_file>

Сценарий:

#!/usr/bin/env python3

import sys

source = sys.argv[1]       # the file with the password you want to insert
destination = sys.argv[2]  # the targeted configuration file
prefix="USER:"             # prefix, check if it is exactly as in your files

with open(source) as src:
    name = src.read().strip()

with open(destination) as edit:
    lines = edit.readlines()

for i in range(len(lines)):
    if lines[i].startswith(prefix):
        lines[i] = prefix+name+"\n"

with open(destination, "wt") as edit:
    for line in lines:
        edit.write(line)
0
ответ дан 6 October 2019 в 12:10

Можно сохранить имя пользователя в переменной и использовании sed для изменения configfile:

#! /bin/bash
username=$(< /path/to/username)
sed -i~ -e "s/username=XXX/username=$username/"

файл конфигурации в этом примере должен содержать строку username=XXX. Имя пользователя не должно содержать / (некоторые другие неалфавитно-цифровые символы могли бы быть проблематичными, также).

(Непротестированный).

0
ответ дан 6 October 2019 в 12:10

Другие вопросы по тегам:

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