Использование команды SED для обратной записи в тот же файл - PullRequest
0 голосов
/ 22 октября 2019

У меня есть код ниже, который добавляет строку Logger.info после каждого определения функции, которое мне нужно запустить на скрипте Python, что является требованием.

Единственный вопрос - это нужно записать обратно в тот же файл, чтобы в новом файле были все эти инструкции looger.info под каждым определением функции.

например, файл abc.py в настоящее время имеет код ниже:

def run_func (sql_query):

return run_func(sql_query)

и приведенный ниже код должен создать тот же файл abc.pyно со всеми logger.info, добавленными в этот новый файл

def run_func (sql_query): LOGGER.info ('' MIPY_INVOKING run_func функция для файла abc в каталоге 'возвращает run_func (sql_query)

Я не могу записать sed в этом файле в новый файл (с тем же именем файла), чтобы исходный файл был заменен тем же именем и чтобы у меня были все операторы logger.info.

for i in $(find * -name '*.py'); 
do echo "#############################################" | tee -a auto_logger.log
echo "File Name : $i" | tee -a auto_logger.log
echo "Listing the python files in the current script $i" | tee -a auto_logger.log
for j in $(grep "def " $i  | awk '{print $2}' | awk -F"(" '{print $1}'); 

do 
echo "Function name : $j" | tee -a auto_logger.log
echo "Writing the INVOKING statements for $j function definition" | tee -a auto_logger.log

grep "def " $i |sed '/):/w a LOGGER.info (''INVOKING1 '"$j"' function for '"$i"' file in sam_utilities'')' 

if [ $? -ne 0 ] ; then 
    echo " Auto Logger for $i filename - Not Executed Successfully" | tee -a auto_logger.log
 else 
    echo "Auto Logger for $i filename - Executed Successfully" | tee -a auto_logger.log
 fi 
done
done
...