问题标签 [mawk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - 如何在 awk 中定义新的命令或宏
我喜欢定义一个包装现有 awk 命令的新命令,例如print
. 但是,我不想使用函数:
相反,我喜欢定义一个可以不带括号调用的新命令:
我可以想象的一种解决方案是使用预处理器,并且可以很好地设置 awk 脚本的 shebang 以调用此预处理器,然后调用 awk。但是,我更希望有一个纯粹的 awk 解决方案。
注意:该解决方案也应该在我使用的mawk中工作,因为它比vanilla GNU/awk快得多。
更新:讨论表明gawk
(GNU/awk)可以非常快并且mawk
不是必需的。
linux - 没有立即处理通过管道传输到 awk 的输出
考虑以下虚拟备份脚本:
和以下最小的启动脚本
我原以为“重新启动服务”输出会在一秒钟后出现,但在 Debian Wheezy 下运行时,它会在 6 秒后出现。
我的错误在哪里?为什么将“rsync 已完成”字符串写入标准输出时不直接处理 awk 操作?
bash - AWK 匹配列中的值并执行计算
我是 AWK 的新手,我正在努力为我的问题找出答案。我有一个包含以下值的平面文件:
我想使用 awk 比较当前行的 $1 和下一行的 $1,以及 $3 ~/f/. 如果语句为真,则从当前行的 $4 中减去下一行的 $4,并将差值写入当前行的新列,如果为假,则不执行任何操作。我到目前为止是这样的:
显然那是行不通的。有人可以帮忙吗?
bash - 在 Ubuntu 和 Mac 的 awk 命令中执行 switch/case 时出错
执行以下代码时遇到一个非常奇怪的问题:
收到以下错误:
知道有什么问题吗?
在 Mac 上测试:
输出:
在 Ubuntu 上测试:
输出:
arrays - 我可以使用 -v 将数组传递给 awk 吗?
我希望能够将数组变量传递给awk
. 我的意思不是 shell 数组,而是原生数组awk
。我知道我可以像这样传递标量变量:
我可以使用相同的机制来定义awk
数组吗?就像是:
我已经尝试了上述的一些变体,但它们都不能在我的 Debian 上的 GNU awk 4.1.1 上运行。那么,是否有任何版本的awk
(gawk
或其他任何东西) 可以接受来自交换机mawk
的数组?-v
我知道我可以解决这个问题并且可以很容易地想到这样做的方法,我只是想知道是否有任何awk
实现本身支持这种功能。
linux - AWK:跳到下一个文件
我有很多数据文件要处理,但没有必要处理每个文件中的每条记录。有没有办法指示awk
停止处理当前文件并跳到下一个文件?
bash - 为什么用不同的参数多次调用同一个函数会更慢
我已经建立了一个简单的 bash 脚本,它从数千个单词的列表中生成 4 个单词的随机密码。现在我不确定它对于我个人使用是否真的安全或有效,如果您考虑任何改进,请告诉我。但这不是重点。看看->
因此,当我在笔记本电脑上运行它时,输入和输出如下所示:
第二次:
有时可能很有趣。
无论如何,这是脚本:
看看我必须在哪里为每种类型的单词创建一个数组?3 种类型,3 个数组。好吧,我考虑过在一个函数中获取该代码,所以我只需要调用该函数 4 次,每个单词对应我的 4 个单词,并使用不同的参数。我真的以为它会更快。
这是代码更改:
现在这里是输入/输出:
然后再次:
时间上的差异并不是什么大问题,尽管总的来说,我认为它肯定会更快。
那么你知道为什么第二个脚本比第一个慢吗?
linux - 不同的awk版本有什么区别?
我在这里阅读 awk,但我只是想知道 awk 版本,因为我之前遇到过不同 awk 的问题。下面是我所拥有的不同版本。据我了解,有 awk、mawk 和 gawk。gawk 是最新的/更好的。谁能澄清我的假设?我是最新最好的 GNU Awk 4.1.1,它是 gawk 吗?对不同版本还有其他意见吗?
env1 - 我的电脑上的 cygwin
env2 - 一个 docker 容器
编辑1
根据评论,单击 awk、gawk 和 mawk
gawk
(GNU awk 的缩写)的标签是 awk 的免费实现,具有多种有用的扩展。
Mawk
是 AWK 编程语言的实现和快速处理器。
AWK
是一种解释性编程语言,专为文本处理而设计,通常用作数据提取和报告工具。仅当您的问题涉及使用 awk 或基于 awk 的 API进行编程时,才使用此标签。与使用或排除 awk 命令行选项本身有关的问题是题外话。
awk - MAWK:将 match() 存储在变量中
我尝试使用 MAWK,其中match()
内置函数没有第三个变量值:
见文档。
var
当以后我想像这样构造我的输出时,如何将此输出存储到一个名为的变量中?
EDIT2 - 完整示例:
输入文件结构:
解析器.awk:
预期输出:
我想在函数Id
外调用变量。match()
MAWK 版本:
awk - gsub 代替翻译不起作用
我有一个字典dict
,其中记录由“:”分隔,数据字段由新行分隔,例如:
现在我希望 awk 替换input
文件中每条记录的所有出现,例如
我的第一个 awk 脚本看起来像这样并且工作得很好:
给我:
不幸的是,另一个 dict 文件包含一些正则表达式使用的字符,所以我必须在我的脚本中替换转义字符。通过将 key 和 rep[key] 移动到一个字符串中(然后可以解析转义字符),脚本将只替换字典中的第二条记录。为什么?以及如何解决?
这是脚本的当前第二部分:
所有脚本都由awk -f translate.awk dict input
提前致谢!