通过Emacs学习Awk(2020年)

2022-02-20 18:22:01

这篇文章描述了我使用Emacs、Org模式和Org drill学习AWK编程语言的工作流程。该工作流可能适用于其他编程语言。邮报赢得';t介绍如何使用Emacs、组织模式或组织演练的详细信息。它';s的目的是提供工作流的一般概述。

git回购协议在这里提供闪存卡、笔记本和一些文本文件。

我刚刚读了";AWK编程语言";这本书让我觉得AWK很棒,我想学习更多的语言。我开始思考学习AWK的方法。我的目标是在较小的脚本和一行程序中高效地使用AWK。AWK是图灵完备的,可以用于更大的应用。但是,如果我编写更大的应用程序,我选择的武器是具有不可变数据结构的功能性lisp。我认为AWK是我工具箱中的一个自然工具,是过滤日志、搜索文件中的模式、减少几个文件、转换会计数据或其他与某种结构的文本相关的东西的完美语言。与find、sed、grep和sort AWK等程序结合使用,可以实现超级强大和高效。这就是AWK为我带来光明的地方。

我开始思考我的学习过程的一个原因是我觉得我不';I don’我没有时间一次性学习一门新语言,并保持知识新鲜。我想慢慢地、慢慢地进步。如果我忘记了什么,或者暂时远离AWK,我想尽快回到正轨,而不需要再读一本书或查阅大量文档。这当然不完全可能,但如果我能在第二个大脑中保留AWK最重要的部分,我会非常高兴。

我想到的是一个由组织钻取和组织模式源代码块以及提供的文本文件组合而成的工作流。Org drill是一种Emacs模式,它使用间隔重复算法和闪存卡为您提供问题,然后提供答案。这些问题和答案都是我写的,通常是基于#34;著名的";Nginx访问日志等文本文件/etc/passwd或。账本档案。

一个典型的工作流程是阅读一本书或一个文档页面中的一章,用问题和答案填充我的来源。如果我发现一些我认为有用的东西,我会写一张或多张卡片。这样我可以增加我的知识来源,当我觉得有时间时,我可以运行学习工作流。

除了笔记本文件和闪存卡外,还有两个文本文件。文本文件是";著名的";文件夹。笔记簿文件包含每个文件的组织模式源块。这些问题说明了该问题使用的源代码块。

它告诉我们要评估的语言是AWK。结果应插入源块下方的笔记本文档中。AWK程序作为输入的文件位于:in file参数中。如果在这个源代码块上执行C-C-C,它将插入的所有内容/文本文件/访问。笔记本文档中的日志文件。如果发生错误,则会将错误消息插入文档中。

下面是一个例子,说明了当你给出答案时它会是什么样子。你写下你的AWK答案,然后用C-C-C查看结果。如果你感到满意,并且认为你有正确的答案,告诉组织训练课程,然后它将为你提供正确的答案。你可以通过告诉org drill你在1-5分的范围内做得有多好来纠正自己。根据你对答案的评价,org drill将为下一次出现问题设定日期。

#+BEGIN_SRC awk:结果输出代码:在文件中/文本文件/访问。日志{ips[$1]+=1}END{for(i in ips){print i,ips[i]|和#34;sort-rk 2,2和#34;}#+结束#SRC#+结果:#+开始#SRC awk 121.204。106.181 8 191.54 . 160.135 7 111.185 . 35.101 1 111.85 . 5.44 1 101.11 . 117.117 1#+结束#

下面是一个关于闪存卡外观的示例。如果你知道基本的组织模式,这种结构会让你感到非常熟悉。这样做的一大好处是';这只是短信。没有数据库或奇怪的东西。纯文本,易于搜索和版本控制。

**打印文件的第7行到第10行:awk:drill:如何使用范围模式打印第7行到第10行?:存档/文本文件/分类账。分类账***答案#+开始#SRC awk:结果输出代码:在文件中/文本文件/分类账。分类账FNR==7,FNR==10#+结束#+结果:#+开始#结束#。Köp av tangentbord;~/公司/输入发票/2020/2020-04-17-lenovo-keyboard-swedbank-transaction。pdf 2:4:4:0667.00瑞典克朗2:0:1:8-667.00瑞典克朗

这种学习语言的方式对我很有吸引力。我认为AWK非常适合#39;它可以将预定义的文本文件作为输入,AWK程序可以简短高效。在写这篇文章时,我刚刚完成了工作流程,把所有的部分都整理好了。现在是';是时候用好的问题和答案填满我的第二个大脑,继续我的道路,成为一个快乐的AWK用户。如果你想帮我优化任何工作流程,或者用好的闪存卡做贡献,我非常乐意通过GitHub或Twitter收到拉取请求或反馈。