问题标签 [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.
awk - awk 和 mawk 中的浮点比较
我不明白为什么浮点数比较在 mawk 中不起作用:
虽然它在 awk 上表现得非常完美:
我显然在这里做错了什么,但我不明白是什么。
linux - 在 bash 中处理文本 - 从 pactl sink-inputs 输出中提取程序的体积
寻找一种方法来提取音量
输出示例:
我想提取
从线
注意:可能有多个 sink 输入,我只需要从 Sink Input #67 中提取音量
谢谢
PS 我的脚本需要这个,它应该增加或减少我的音乐播放器的音量。我对 linux 和 bash 都是全新的,所以我想不出解决问题的方法。
编辑:我的 awk 版本
bash - Mawk量词不起作用
我正在关注一本 awk 书中的示例。我有以下名为“ 25regex.sh
”的 bash 脚本:
当我运行它打印的脚本时:
我希望第二个 awk 命令打印
所以我的问题是,为什么第二个 awk 命令按字面意思打印而不是执行?谢谢。
的输出cat -A 25regex.sh
是:
linux - 通过管道传输到 awk 的 Bash 命令有时会被缓冲
系统:Linux 4.13.0-43-generic #48~16.04.1-Ubuntu BASH_VERSION='4.3.48(1)-release'
命令:
应该打印“日期”输出的第三个字段(秒),每 5 秒一行。问题:awk 仅在管道缓冲区已满时才从管道读取并处理其输入。即当生成超过 4K 的输入时。
当awk被cat替换时,按预期每 5 秒打印一行。
这个代码片段是从一个在其他系统上运行良好的 shell 脚本简化而来的,所以在这个系统中一定有一些关于 bash、awk 及其配置的东西。
简而言之,有没有办法让awk在从管道中读取时表现得像猫一样?
@Ed Morton:我确实尝试在每次打印后添加fflush(),但它不起作用——这表明问题出在 awk 的输入上,而不是输出上。我还尝试添加对system("date")的调用,这表明 awk 确实一次获取所有输入行,而不是在它们生成时立即获取。
对于那些问:
regex - 如何在mawk中启用区间正则表达式?
在 Ubuntu 1604 上运行 mawk 时遇到问题:
尽管常规模式实际上匹配,但上面的命令什么也没输出。
然后我尝试使用相同的常规模式运行 egrep:
它工作正常!
然后我查阅了 mawk 的文档,似乎根本原因是“传统上,间隔表达式在 awk 中不可用。”。常规模式中的字段“{3}”会导致问题。如果我使用 "[0-9][0-9][0-9]" 而不是 "[0-9]{3}": ,它可以正常工作。
https://invisible-island.net/mawk/manpage/mawk.html
https://www.math.utah.edu/docs/info/gawk_5.html
我为mawk尝试了选项--posix' and
--re-interval',它们两者都不起作用。
是否有可能在 mawk 中启用“间隔表达式”?我的操作系统是“Ubuntu 16.04.4”,mawk 是“1.3.3-17ubuntu2”。
谢谢。
bash - awk 语言中的 RS
我正在学习 awk 编程语言,但我在这里遇到了一个问题。
我有一个文件(awk.dat),具有以下内容:
我正在使用以下命令:
它向我返回了错误:
同时,如果我使用命令:awk 'BEGIN{RS=" *, *";ORS="<<<---\n"} {print $0}' awk.dat
,它会给我所需的结果。
我需要了解这部分:RS=" *, *"
,双引号和*
before之间的空格的含义,
,因此它会引发错误。
预期输出:
谢谢。
awk - awk 和(可能)空字符的问题
我有这个文件,它“可能是”一个二进制文件:
如果我使用sed -n "l" file
,为了看到“不可打印的字符”,我得到:
我正在尝试使用 awk ,但如果我这样做了awk '{print $0}' file
,我会得到:
因此,awk 似乎在它找到的第一个“^@”或“\000”字符处停止处理文件。
我怎样才能避免这种情况?
注意:似乎我awk
的是mawk
awk - 为什么有几个 Linux 发行版默认提供 mawk,即使它不符合 POSIX 标准?
mawk 不符合 POSIX,因为它不支持 POSIX ERE。
准确地说,它在其 ERE 中不支持像 [[:space:]] 这样的命名字符类,它们是 POSIX ERE 的一部分。
GNU awk 和 BusyBox awk 似乎都没有这个问题。
我在自己的 awk 脚本中多次遇到此问题,因为我真的很喜欢 [[:space:]] 来匹配 htab 以及空格和可能其他特定于语言环境的空白与单个字符类表达式。
所以我想知道为什么有几个 Linux 发行版选择在默认情况下为这样一个突出的实用程序提供一个不符合 POSIX 的实现,即使也可以使用符合 POSIX 的那些?
awk - 需要使用 mawk 删除重复的行(特别是)
我有一个运行良好的 gawk 命令。但是我有一台安装了 mawk 的机器,当我尝试安装 gawk 时,它抱怨依赖关系损坏。我想将此行更改为 mawk 语法。
输入文件:它是一个三管道分隔文件