linux - 将 2 个文件的内容通过管道传输到 bash 中的 2 个不同参数
问题描述
我有一个文件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 -a
执行main.py
一次pattern.txt
。
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
推荐阅读
- javascript - 无法显示反应图片应用程序的画布元素
- javascript - Javascript pushState - 后退/前进按钮未按预期工作
- c# - EPPlus:单元格显示为空但返回 0
- java - 尝试导入项目时在 IntelliJ IDE 中未检测到框架
- java - 如何在 Firestore 中存储富文本编辑器的数据?
- rx-java - 如何使用 RxJava2 创建谓词
- powershell - 如何在 powershell where-object 中使用 And Or 过滤器
- java - 普罗米修斯仪表没有改变值 - 春季启动
- javafx - 如何将键事件分派到鼠标下方的正确 JavaFX 形状?
- python - 如何用 qutip/python 调用时间相关的哈密顿?