python - 为每一行运行脚本并根据输出执行某些操作

标签 python linux bash

我有一个别人制作的 Python 脚本。在我的 bash 脚本中,我想对 txt 文件中的每一行执行它,并使用每一行作为参数。然后根据 python 脚本的输出,将该行添加到新的 txt 文件中。

此刻我运行

sudo python tester.py 10.0.1.1 999 user pass

其中“10.0.1.1 999 user pass”将是我的 txt 文件中的一行。

如果成功,它会输出“SUCCESS!”。这是我想将该行复制到新文件的地方。

现在,为了让它变得更复杂,我想根据行的开头更改 python 脚本。这不是 100% 需要的,但可以让我免去事先分割 txt 文件的麻烦。

例如。如果该行以“10”开头,则使用脚本 1。如果该行以“192”开头,则使用脚本 2。两者都有相同的“SUCCESS!”输出。

我已经尝试过了

cat list.txt | while read line
do
    python tester.py $line
    if $(...) == "S"*
    then
        $line >> good.txt
    fi
    done

但是有些不对劲。

希望这对有人能够帮助我有足够的意义。

克里斯

最佳答案

通过引用 $line,您可以将该行中的所有单词合并到一个参数中,但 Python 脚本需要 4 个单独的参数。

您应该将该行的第一个字段读入其自己的变量中,以便可以测试它来决定运行哪个脚本。

然后将脚本的输出分配给一个变量,针对 SUCESS! 进行测试,如果匹配则写入输出文件。

while read -r ip rest
do
    case "$ip" in
        10.*) script=tester.py ;;
        192.*) script=tester2.py ;;
        *) echo "IP $ip doesn't start with 10 or 192";
            exit;;
    esac
    result=$(sudo python $script $ip $rest)
    if [[ $result == SUCCESS* ]]
    then
        echo "$ip $rest"
    fi
done < list.txt > good.txt

关于python - 为每一行运行脚本并根据输出执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400779/

相关文章:

python - 如何编写多频音频文件?

计算在 for 循环中使用 fork 创建的进程数

linux - 使用 bash 对文件进行算术运算

bash - 如何等待消息出现在登录 shell 中

Pythonanywhere - 导入错误 : No module named 'myapp.settings'

python - 我应该使用 Windows 还是 Mac 参加 Python CS 类(class)?

python - 按周和月聚合 Pandas 数据框

linux - 基于 *.deb 文件创建 *.rpm 文件

bash - 在函数中调用的 getopts 未拾取标志

python - 如何在python中编写和保存html文件?