首页 > 解决方案 > SED 命令用于写回同一个文件

问题描述

我有下面的代码,它在我需要在 python 脚本上运行的每个函数定义之后添加 Logger.info 行,这是要求。

唯一的问题是这必须写回同一个文件,所以新文件在每个函数定义下面都有所有这些 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 function for abc file in directory' return 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

标签: unixsed

解决方案


推荐阅读