【发布时间】:2014-11-09 12:36:47
【问题描述】:
假设我想在标准输出上print 1 + 1(即单线编码)。
有了awk,我可以简单地做到:
$ echo | awk '{print 1+1}'
2
如何用 python 做到这一点?
【问题讨论】:
-
有了
awk,你就不需要echo。使用BEGIN。awk 'BEGIN{print 1+1}' -
请注意,Python 对单行代码的用处不如
awk... 但它对例如 5 行代码更有用,因此您倾向于看到它与 HEREdoc 脚本一起使用不仅仅是内联脚本。 (但您可以将它用于内联脚本,如 IfLoop 的回答所示。) -
@chepner 您能否详细说明为什么
END比BEGIN更有效? AFAIK 都只运行一次,前者在读取输入之后,前者在读取输入之前。 -
@jaypal 不是;我在看到你的出现之前发表了我的评论,只是碰巧使用了
END而不是BEGIN。 “更高效”只是指忽略(空)标准输入,而不是启动第二个进程来提供无论如何都会被忽略的输入,而不是在BEGIN和END之间进行选择。 -
@Cawas:Python 被明确设计为重视可读性而不是简洁性和明确性而不是隐性。你可以塞进一条线上的东西是有限度的。在 awk(或 sed 或 perl)中是语法的东西是 Python 中的词汇,甚至可能不是内置的;标准输入或命令行参数之类的东西几乎没有什么魔力;等等。所以不,Python 永远不会像 awk 一样有用。