是否可以在不将文件写入磁盘的情况下将数据从 awk 发送到 python?

Is it possible to send data from awk to python without writing files to disk?

我在一个目录中有一堆输出文件,我正在使用 awk 从它们中提取信息。一旦 awk 完成了 运行 它的过程,并且我已经将我的信息整齐地写在 data.txt 文件中,我调用 pandas 并创建我的数据的数据框。

我的问题是,当我从 awk 获取我的信息时,我是否可以立即将其放入 numpy array/list,使用 subprocess 模块或其他东西?

您可能最后使用 sys 中的 sys.stdin.readawk 的输出(|)输送到 python。考虑下面的简单示例 countdigits.py,它在整个输出中打印位数

import sys
data = sys.stdin.read()
digits = [i for i in data if i.isdigit()]
print(len(digits))

file.txt其中的内容是:

1
2
3

然后

awk '//' file.txt | python countdigits.py

会输出

3

awk '{print [=14=]*100}' file.txt | python countdigits.py

会输出

9

您可以使用 | 将任何文本从 awk 传输到 python,而无需创建文本文件。