linux - 将 2 个文件的内容通过管道传递给 bash 中的 2 个不同参数

标签 linux bash shell pipe

我有一个文件pattern.txt:

pattern1
pattern2
pattern3
pattern4
...

我还有另一个名为 text.txt 的文件,它包含一个巨大的带有空格、换行符等的随机字符串。

我想处理这两个文件的内容以便能够进行这些调用(-p-t 的顺序无关紧要):

python3 main.py -p pattern1 -t 'text.text content'
python3 main.py -p pattern2 -t 'text.text content'
python3 main.py -p pattern3 -t 'text.text content'
... etc

这是我到目前为止所做的:

cat patterns.txt | xargs -i -n1 python main.py -p {} -t "how are you doing"

最佳答案

使用xargs -apattern.txt 中的每一行执行一次main.py

xargs -a pattern.txt -I {} python3 main.py -p {} -t "$(< text.txt)"

您还可以使用 -P 并行运行脚本的多个副本。

如果 main.py 是可执行的并且有一个 shebang 行,例如 #!/usr/bin/env python3 那么最好省略显式的 python3调用。让脚本控制自己的解释器:

xargs -a pattern.txt -I {} ./main.py -p {} -t "$(< text.txt)"

如果您愿意,您也可以使用手卷循环来完成此操作。

text=$(< text.txt)
while IFS= read -r pattern; do
    ./main.py -p "$pattern" -t "$text"
done < pattern.txt

关于linux - 将 2 个文件的内容通过管道传递给 bash 中的 2 个不同参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54046486/

相关文章:

linux - 在 Atlassian 人群中将内部数据库更改为外部 JDBC

linux - 如何将一系列 AT 命令发送到 bash 中的串口?

bash - 如何在 shell 中快速求和有向图中的值?

linux - 如何从 awk 中的变量中修剪空格?

linux - 圣人安装丢失文件

c++ - 编译 Doom 3 时找不到/usr/lib/libz.a

linux - 为什么 node.js+mongodb 不为每秒发送 100 个请求提供 100 个请求/秒的吞吐量?

bash - GNU m4 安装在 Ubuntu 上的 Windows 10 bash 上失败

java - bash脚本提取jar文件并复制路径

linux - 如何列出 nginx 中的所有虚拟主机