首页 >后端开发 >Python教程 >使用 pypyp 和 uv 的 Linux Shell 符合人体工程学的 Pyhon 文本管道解决方案

使用 pypyp 和 uv 的 Linux Shell 符合人体工程学的 Pyhon 文本管道解决方案

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 21:13:46911浏览

Ergonomic Pyhon Text Piping Solution for Linux Shell with pypyp and uv

抽象的

这篇简短的博客文章是关于使用 pypyp 和 uv 的 Linux 文本管道解决方案的介绍,它可以轻松地重用您所有有关 python 的知识和软件包,而无需学习 awk。我们专注于告诉读者为什么选择它而不是如何使用它。如果想了解更多使用方法,请访问pypyp主页和uv主页

为什么我不使用 awk ?

编写 Linux shell 脚本或命令时,awk、sed 和 grep 是处理文本的强大工具:您可以使用 grep 来查找类似 ls | 的内容。 grep myname,使用 sed 替换某些内容并使用 awk 作为图灵完备的编程语言来处理更复杂的情况。
grep 和 sed 都很好。他们只做一件事,而且做得很好。但 awk 不是。众所周知,awk 是一种文本编程语言,与 grep 和 sed 相比,学习如何使用它需要更多的时间。这就是问题所在,awk 是一个很好的文本处理工具,但不是一个好的编程语言。
与 Python、Ruby 和 Perl 相比,awk 不是通用编程语言,因此 awk 99% 的使用仅是在 linux shell 中处理文本,而这种便利性不值得您花费时间和认知负荷来学习新的编程语言,尤其是当你不是主修 shell 脚本时。
所以,生命短暂,如果你可以使用已经学过的编程语言,为什么还要学习另一种编程语言呢?

为什么我选择pypyp?

pypyp 是一个解决方案。这是一个简单的(少于 800 行代码)Python 脚本,可以帮助您使用单个命令 pyp 替换 awk 、 sed 和 grep ,并具备您有关 Python 的所有知识。这是一个简单的例子。

uname | pyp 'x.lower()'
ls | uvx pypyp 're.match(r"\S+.c",x)'   # use python regex

pypyp 解决了许多关于 python -c 的简单但重要的问题,它读取 stdin 到lines变量并将行分割到x变量,它还自动打印最后一个表达式。同时它导入了一些comman包,使python像perl和awk一样易于使用作为linux shell的文本处理语言。

为什么我也用uv?

uv 就像 python 的 Cargo 或 npm。将 pypyp 与 uvx(类似于 npx 或 pipx)一起使用非常简单,尤其是您需要 pypyp 的第三方包。例如,我想将 numpy 与 pypyp 一起使用,我可以简单地使用 uvx --with numpy 添加 numpy 包并使用 pyp 自动导入它。

uvx --with numpy pypyp 'numpy.random.randint(100)'

uv 还使安装 pypyp 变得更容易。安装 uv 后,您可以直接运行 uvx pypyp,uvx 将为您下载并运行它。

结论

我发现uvx pypyp是awk的一个很好的替代品,它可以重用你所有关于python的知识,而不会给你增加更多的负担。但我们也应该注意到,它目前还不是一个流行的解决方案,为了兼容性,最好不要与其他人共享您的命令或脚本。

以上是使用 pypyp 和 uv 的 Linux Shell 符合人体工程学的 Pyhon 文本管道解决方案的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn