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

问题描述

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

我的问题是,当我从 awk 获取我的信息时,我是否可以立即将其放入一个 numpy 数组/列表中,使用 subprocess 模块或其他什么?

解决方法

最后,您可以使用 sys 中的 |awk 的 (python) 输出管道输送到 sys.stdin.read。考虑以下简单示例 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 $0*100}' file.txt | python countdigits.py

会输出

9

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