在 python 脚本中将变量值传递给 awk 命令
Passing variable values to awk command in python scripting
我有以下 awk 命令
awk -F "|" '{ if(2==0 && 3==1) print 5}' abc.dat
我想通过传递以下变量 a、b、c 的值作为替代值而不是数值来生成 awk 命令并执行它,但它没有发生。它给我语法错误。有人可以使用 python 脚本帮助我 运行 这个 awk 命令吗?
一=132,
b = 123,
c = 145
我正在使用 python 3.4.4
您想将测试和打印的列号从某些 Python 代码传递给 awk。你需要做这样的事情:
import subprocess
def awk_by_cols(a, b, c):
program = "{ if($%d==0 && $%d==1) print $%d}" % (a, b, c)
return subprocess.check_output(["awk", "-F|", program, "abc.dat"])
if __name__ == "__main__":
print(awk_by_cols(1, 2, 4).decode())
# Sample data file abc.dat holds:
"""\
0|0|0|0
0|0|1|1
0|1|0|2
0|1|1|3
1|0|0|4
1|0|1|5
1|1|0|6
1|1|1|7
"""
在 program 字符串中嵌入列号可以使用许多其他方法来完成。我选择了最传统的方法——printf-style。
我有以下 awk 命令
awk -F "|" '{ if(2==0 && 3==1) print 5}' abc.dat
我想通过传递以下变量 a、b、c 的值作为替代值而不是数值来生成 awk 命令并执行它,但它没有发生。它给我语法错误。有人可以使用 python 脚本帮助我 运行 这个 awk 命令吗?
一=132,
b = 123,
c = 145
我正在使用 python 3.4.4
您想将测试和打印的列号从某些 Python 代码传递给 awk。你需要做这样的事情:
import subprocess
def awk_by_cols(a, b, c):
program = "{ if($%d==0 && $%d==1) print $%d}" % (a, b, c)
return subprocess.check_output(["awk", "-F|", program, "abc.dat"])
if __name__ == "__main__":
print(awk_by_cols(1, 2, 4).decode())
# Sample data file abc.dat holds:
"""\
0|0|0|0
0|0|1|1
0|1|0|2
0|1|1|3
1|0|0|4
1|0|1|5
1|1|0|6
1|1|1|7
"""
在 program 字符串中嵌入列号可以使用许多其他方法来完成。我选择了最传统的方法——printf-style。