Редактирование на месте в Ruby внутри скрипта Ruby

Я пишу сценарий, в котором одна из частей работы, которую мне нужно выполнить, - это заменить каждый экземпляр строки в файле пустой строкой, прежде чем приступить к какой-либо другой работе. Я бы предпочел редактировать на месте, а не читать весь файл, делать gsub и записывать его обратно.

Я знаю, что могу сделать это из командной строки:

ruby -pi.bak -e "gsub(/MyText/, '')" INSERT_FILE_NAME

Но поскольку после этого мне нужно выполнить некоторые другие операции сценария, как я могу выполнить эту операцию изнутри сценария Ruby?

не уверен, что это лучший способ, но вы можете просто вызвать его с помощью обратных кавычек и интерполяции

max pleaner 20.03.2018 00:28

@maxpleaner здорово! супер новичок в Ruby и не знал, что это возможно. Не стесняйтесь написать ответ, и я приму

sethfri 20.03.2018 06:28
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
2
155
1

Ответы 1

Нет никакого «настоящего» редактирования на месте, даже в приведенном вами примере; это просто похоже на одно. Фактически, Ruby читает один файл, записывает измененный и переименовывает их. Вот почему у вас есть bak-файл.

Если файл умещается в вашей памяти, вы можете прочитать весь файл в переменной Ruby, выполнить замену строки, а затем записать строку в файл с тем же именем. Технически говоря, это тоже не «редактирование на месте», но очень близко к тому, что вы ищете.

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