Я пытаюсь изменить одно слово в определенной строке в файле, но у меня возникают проблемы с соединением всех вместе.
По сути, в одной строке моего файла есть ключевое слово «firmware_revision», а в этой строке (и только в этой строке) я хочу заменить слово «тест» словом «производство».
Так что я могу сделать это:
grep 'firmware_revision' myfile.py | sed 's/test/production'
Это выберет нужную мне строку и выполнит подстановку, но я не могу понять, как вставить эту новую строку в исходный файл, чтобы заменить старую строку. Я, очевидно, не могу просто перенаправить его обратно в файл, так что мне делать?
Даже если я использую временные grep
файлы, используя только нужную мне строку, я теряю все остальные данные в файле, поэтому я больше не могу просто перенаправить все это во временный файл, а затем заменить оригинал временным.
Изменить - Кто-то попросил дополнительную информацию
Допустим, у меня есть файл, полный строк, как это
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
Теперь я хочу написать скрипт (в идеале, однострочный), который найдет строку, содержащую «firmware_revision», и изменит все экземпляры слова «test» в этой строке на «production». Слово «тест» может быть в других местах в этом файле, и я не хочу, чтобы они были изменены. Чтобы было ясно, я хочу изменить приведенную выше строку на
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
Как мне это сделать?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
Он очень мощный, он может выполнять обе функции (grep
и замену), но нам потребуется больше информации о том, как выглядит линия, чтобы помочь вам.