我写了一个脚本,我希望它可以在 bash 中进行 _管道传输_。就像是:
echo "1stArg" | myscript.py
可能吗?如何?
原文由 gbr 发布,翻译遵循 CC BY-SA 4.0 许可协议
我写了一个脚本,我希望它可以在 bash 中进行 _管道传输_。就像是:
echo "1stArg" | myscript.py
可能吗?如何?
原文由 gbr 发布,翻译遵循 CC BY-SA 4.0 许可协议
我将用一个使用 fileinput 来实现 UNIX 工具的典型行为的 grep 示例来补充其他答案:1) 如果没有指定参数,它会从 stdin 读取数据; 2) 许多文件可以指定为参数; 3) -
的单个参数表示标准输入。
import fileinput
import re
import sys
def grep(lines, regexp):
return (line for line in lines if regexp.search(line))
def main(args):
if len(args) < 1:
print("Usage: grep.py PATTERN [FILE...]", file=sys.stderr)
return 2
regexp = re.compile(args[0])
input_lines = fileinput.input(args[1:])
for output_line in grep(input_lines, regexp):
sys.stdout.write(output_line)
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))
例子:
$ seq 1 20 | python grep.py "4"
4
14
原文由 tokland 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
看到这个简单的
echo.py
:跑步:
输出:
debug_output.txt 内容: