问题标签 [awk]
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.
performance - 更快地查找受时间限制的重复项
在一台装有 AIX 的机器上,PERL
如果它们具有相同的 id 并且如果它们在四个小时内注册,则我需要过滤将被视为重复的记录。
我使用这个过滤器实现了这个过滤器AWK
并且工作得很好,但我需要一个更快的解决方案:
unix - 是否有 Unix 实用程序可以将时间戳添加到标准输入?
我最终在 Python 中为此编写了一个快速的小脚本,但我想知道是否有一个实用程序可以输入文本,它会在每一行前面加上一些文本——在我的具体情况下,是时间戳。理想情况下,使用将类似于:
(在你回答 sed 之前,我试过这个:
但这仅在执行 sed 时评估 date 命令一次,因此相同的时间戳被错误地附加到每一行。)
arrays - 在 awk 中对哈希/数组进行排序
有没有一种简单的方法可以在 awk 中执行以下任何操作?
- 按数据对数组/哈希进行排序
- 通过它的字符串键对哈希进行排序
awk - 还有理由学习AWK吗?
我不断学习新工具,甚至是老式工具,因为我喜欢使用正确的解决方案来解决问题。
尽管如此,我想知道是否还有任何理由学习其中的一些。awk
例如对我来说很有趣,但是对于简单的文本处理,我可以使用grep
, cut
,sed
等,而对于复杂的,我会使用 Python。
现在我并不是说它不是一个强大而方便的工具。但是既然学习一个新工具需要时间和精力,值得吗?
perl - 根据当前文件的内容从 awk 搜索/读取另一个文件,这可能吗?
我正在使用 (GNU) 处理一个巨大的文件awk
,(其他可用的工具是:Linux shell 工具,一些旧的(> 5.0)版本的 Perl,但无法安装模块)。
我的问题:如果某个field1,field2,field3包含X,Y,ZI必须在另一个目录中搜索包含field4和field5的文件,并将找到的文件中的一些数据插入到当前输出中。
例如:
实际文件行:
现在我需要搜索另一个文件(在另一个目录中),其中包含例如
并$0
从原始文件和找到的文件写入 STDOUT ,然后处理原始文件的下一行。f2
f3
有可能做到awk
吗?
scripting - awk 脚本帮助 - 逻辑问题
我目前正在编写一个简单的 .sh 脚本来解析 Exim 日志文件中匹配“o”的字符串。目前,在查看 output.txt 时,每行(606 行)上都打印一个 0。我猜我的逻辑是错误的,因为 awk 不会抛出任何错误。
这是我的代码(针对连接和计数器问题进行了更新)。编辑:我已经从 dmckee 的答案中采用了一些新代码,我现在正在使用旧代码来支持简单性。
有任何想法吗?
编辑:为了清楚起见,我在电子邮件地址中使用“o”,因为 ' 是电子邮件地址中的非法字符(在我们的数据库中,仅以 o' 为前缀的名称出现)。
编辑 2:根据评论请求,这里是一些所需输出的经过消毒的样本:
我在循环中从 20 开始的原因是因为第 20 个字段之前的所有内容都只是标准日志信息,我在这里不需要这些信息。我所需要的只是该解决方案的 IP 及其他所有内容(每个 550 错误的消息对于每个正在使用的邮件服务器都不同。我正在编译一个常见的列表)
bash - 如何从管道分隔的文件中打印字段?
我有一个由管道字符分隔的字段的文件,我只想打印第二个字段。此尝试失败:
有没有办法做到这一点?
error-handling - awk 可以跳过不存在的文件吗?
有没有办法让awk (gawk) 忽略或跳过丢失的文件?也就是说,通过命令行传递的文件不再存在于文件系统中(例如,/proc/[1-9]* 下快速出现/消失的文件)。
默认情况下,丢失文件是致命错误:-(
我希望能够做类似这样的事情:
包装脚本无法在 awk 运行之前检查文件是否存在,因为它们可能会在检查它们和 awk 尝试打开它们之间消失,即,这是一个竞争条件。(在 awk 中 check-and-then-open 也是一种竞争条件,虽然时间比较紧)
windows - RegEx in awk and WinGrep
So I'm looking for a pattern like this:
size='0x0'
In a log file, but I'm only interested in large sizes (4 digits or more). The following regex works great in EditPadPro (nice tool BTW)
But the same RegEx does not work in awk - seems like the repetition {4,}
is messing it up. Same with WinGrep - any idea from the RegEx gurus? Thanks!
awk - 最佳 awk 命令
我发现 AWK 真的很有用。这是我放在一起来操作数据的一个衬里。
我使用此 AWK 制作了一个脚本文件,该文件将重命名一些文件并仅打印出选择性列。有谁知道更好的方法来做到这一点?你最擅长的 AWK 1 班轮或巧妙的操作是什么?