awk是你不知道的最酷的工具

2021-05-05 20:22:46

我的电子邮件客户端AERC允许您将电子邮件发送到任意命令,以便在终端中显示它们以便在终端中显示。我经常获得的一种电子邮件是一个补丁,差异直接进入电子邮件。我写了这个awk脚本,将ANSI颜色添加到这样的电子邮件中:开始{bright =" \ x1b [1m" Red =" \ x1b [31m"绿色=" \ x1b [32m"青色=" \ x1b [36m"重置=" \ x1b [0m" hit_diff = 0} {if(hit_diff == 0){#trin托架从线路gsub(/ r /,"" $ 0)($ 0〜/ ^ diff /){hit_diff = 1 ;打印亮$ 0重置} else if($ 0〜/ ^.*\。*(\ +| - )/){left = substr($ 0,0,索引($ 0," |") - 1)右= substr($ 0,索引($ 0," |"))GSUB(/ - + /,Red"&"重置,右)GSUB(/ \ + + /,绿色"&"重置,右)打印左右} else {print $ 0}} else {#trin托架从线路gsub(/ \ r /,"&#34 ;,$ 0)如果($ 0〜/ ^ - /){print红色$ 0 reset}否则if($ 0〜/ ^ \ + /){print green $ 0 reset} else if($ 0〜/ ^ /){打印$ 0} else if($ 0〜/ ^ @@( - [0-9] +,[0-9] + \ + \ \ + [0-9] +,[0-9] +)@@。* /){sub(/ ^ @@( - [0-9] +,[0-9] + \ + + [0-9] +,[0-9] +)@@ /,青色"&"重置)打印$ 0} else {print blay $ 0 reset}}}}}

这是最基本的awk。 git的LS-树的回报是这样的:100644 BLOB aa61a6c84fa215178b560e2bddcdcb18bf62ccc7 .build.yml100644斑点73ab8769f93bbbd5c4b69d33c2fa86329d05bc85 .gitignore100644斑点65d4d3ae9206f664e72c49ffed1489414852e637 LICENSE100644斑点6fd05a7d17471026df258d9931309a19ac286c5f README.md040000树dfdc471efbd87a131fd7fe41706debdb48411ebe assets100644 BLOB ede1a81e5b44031d95e315985ed7e7831067d609 config.toml040000树a8ab3f0c2db376725d480c673e289d654d289acc content040000树7b1a4966c4143bcea991e9f77620cb4fda887d66 layouts040000树e4dfc4f7500e111652aa7880002252b47239a2d0 static100644 BLOB f31711885de4cd43571ee633b553016b766d3ec1 webring式。模板

最近我正在寻找我的git存储库中任何文件的第一行的评论,所以:git ls-tree -r head | Awk' {打印4美元}' | XARGS -N1 SED 1Q | grep' //#39; |少我包括这是为了展示一些克制。本市管道中的XARGS,SED和Grep命令都可以纳入AWK,但它更简单。有时我有一个文件,我希望它有行号。所以,我写了一点壳一衬里,这是作业的:$ cat〜/ bin / linenoexec awk' {print nr" \ t" $ 0}' $ lineno< / etc / OS-RESSELY1名称=" ALPINE LINUX" 2 ID = ALPINE3 version_id = 3.14.0_alpha202102124 press_name =" Alpine Linux Edge" 5 home_url =" https:// alpinelinux .org /" 6 bug_report_url =" https://bugs.alpinelinux.org/"

如果你不知道如何使用awk,你就会为自己做一个荡妇。 Awk只是适用于某种问题,但这是一个问题比你想象的更常见的问题。另外,一旦你以AWK术语思考,你会发现自己以友好的方式巧妙地描述你的数据:)了解它! ¹虽然特殊提及到AR(i Dunno),但剪切(它是有用的),DD(对于愚蠢的疣),ED(由于默认情况下,不再被安装在任何人的系统上,这会让我脱离)和Fort77(for由于某种原因由posix指定)。 “Awk是您在2021年5月3日发布的最酷的工具。