从 awk 调用 python 脚本
大多数解决方案都从 python 调用 awk。但我想反过来做。我有一个从文件中提取信息的 python 脚本。然而,所述文件名在 awk 脚本的列中引用。
如何向 python 传递参数“%s20s”、文件名并从标准输出获取输入?我想将输出添加为多列。
谢谢你的例子
干杯
most of the solutions out there call awk from python. But i want to do it the other way round. I have a python script that extracts information from a file. However said filename is referenced in a column of the awk script.
How do i pass python the argument "%s20s", filename and get the input from the standard output? i want to add the output as several columns more.
thanks for your examples
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
awk 变量 FILENAME 给出当前正在处理的文件的名称(如果是标准输入则为“-”)。然而,这在 BEGIN 块中不可用,但您可以使用 ARGV[1] 代替(假设您只传递一个文件名):
我用于测试的 python 脚本 (py3) 是:
所以我得到以下输出:
The awk variable FILENAME gives the name of the current file being processed (or '-' if stdin). However, this is not available in the BEGIN block, but you can use ARGV[1] instead (assuming you are only passing one filename):
The python script (py3) I used for testing was:
So I get the following output:
您可以使用
system
函数调用外部命令。这能解决你的问题吗?但这仅提供返回码。如果您需要捕获标准输入,您可以这样做:
Getline 逐行工作,因此如果您想要多行:
You can call external commands using the
system
function. Does that solve your problem?But that only provides the return code. If you need to capture stdin you can do this:
Getline works line-by-line so if you want multiple lines: