此问题在此处已有答案:
sed and rev shell command into Python script [duplicate](1个答案)
昨天关门了。
有一个shell命令,我正在尝试把逻辑转换成python。但是我不知道该怎么做,我需要一些帮助。
shell命令如下所示:
cd ../../../tests/src/main/java
ls
grep -R "@Test" -A 1 | grep void | while read LINE
do
CLASS=`echo $LINE | cut -f1 -d"." | sed s/"\/"/"\."/g`
TEST_CASE=`echo $LINE | sed s/"void "/
该逻辑位于目录中,逐个读取文件名,包括所有子文件夹,然后列出文件匹配项。
grep -R“@测试”-A 1|grep void转换为逐行阅读文件。如果行与@Test匹配,则读取下一行,如果下一行中有“void”,则执行此操作
我尝试了类似下面的方法,但是我不知道sed命令的确切作用以及如何将其转换为python脚本。
CLASS=`echo $LINE | cut -f1 -d"." | sed s/"\/"/"\."/g`
TEST_CASE=`echo $LINE | sed s/"void "/
为了检索发送到参数CLASS和TEST_CASE的数据,我做了剪切,但我不知道如何做sed
for root, dirs, files in os.walk(../../../tests/src/main/java):
for file in files:
with open(os.path.join(root, file), encoding="utf8", errors='ignore') as f:
for line in f:
nextLine = next(f)
if "@Test" in line:
if "void" in nextLine:
CLASS = nextLine.split(",")[0] // How to apply the sed here?
TEST_CASE = nextLine // How to apply the sed here?
任何帮助都将不胜感激
1条答案
按热度按时间qrjkbowd1#
以下是将shell命令转换为Python脚本的一种可能方法:
--此脚本首先遍历路径“../../../tests/src/main/java”中的所有目录、子目录和文件,然后读取每个文件的内容,并检查每行是否包含“@Test”。
如果包含,则读取下一行,并检查其中是否包含“void”。如果包含,则使用.split()方法检索该行的第一个元素,该元素由“,"分隔,然后用“.”替换“/”以获取CLASS的值。然后使用.replace()方法从nextLine中删除单词“void”以获取TEST_CASE的值。