问题标签 [gawk]
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.
perl - 命令行枢轴
过去几天我一直在寻找一组命令行工具、perl 或 awk 脚本,它们可以让我非常快速地转置以下数据:
进入这个:
请注意,每个“单元格”在数据集中只有一个值(即,与电子表格一样,行“1”列“A”没有任何重复)
我已经尝试过各种 awk shell 实现来转置数据 - 但似乎无法让它们工作。我的一个想法是将每个“Col”值剪切到一个单独的文件中,然后使用“join”命令行通过“Row”将它们重新组合在一起——但必须有一种更简单的方法。我确信这非常简单 - 但我有点挣扎。
我的输入文件有列 A 到 G(主要包括可变长度字符串)和 10,000 行。如果我可以避免将所有内容加载到内存中,那将是一个巨大的优势。
给任何有答案的人邮寄啤酒!
一如既往 - 非常感谢您的帮助。
干杯,
乔什
ps - 我有点惊讶,没有一个开箱即用的命令行工具来执行这种非常基本的枢轴/转置操作。我查看了http://code.google.com/p/openpivot/和http://code.google.com/p/crush-tools/两者似乎都需要聚合计算。
awk - 用 awk 匹配多个模式多次记录
我试图一次有效地匹配多个模式,原则上效果很好:
此外,我想匹配记录中的所有事件:
现在扩展上面的示例以匹配多个模式,我最终会得到一系列 findall 调用:
问题在于,对于许多不同的模式 (>100),这种方法的性能几乎不如第一个样本。这是有道理的,因为我猜这个模式不会出现在同一个自动机中。
有没有办法稍微加快速度?例如,为多种模式提供“匹配”。我想我可以连接模式(abc|def),但是我会丢失确切匹配的模式的信息。
更新:每一次出现都应该匹配:
作为输入数据导致2 个匹配记录(给定标准分隔符),但如果与模式“abc”和“xyz”一起使用,则整个数据中有 4 个匹配。这篇文章中的第一个示例至少报告了3 个匹配项,但未能在第一条记录中检测到多次出现的“abc”
python - Python:在两个文件中查找公共文本
让我给出示例文本文件:
例如在file1.txt中的数据是:-
file2.txt中的数据是:-
期望的结果:
我如何得到这个结果?我想使用python
orgawk
或sed
。
replace - 查找特定列并用 gawk 用特定值替换以下列
我试图找到我的数据有重复行的所有地方并删除重复行。另外,我正在寻找第 2 列的值为 90 的位置,并用我指定的特定数字替换以下第 2 列。
我的数据如下所示:
我希望我的数据看起来像:
我的代码:
我已经能够成功删除重复的行,但是,我无法执行我的代码的下一部分,即替换我在 BEGIN 中指定的值作为 ERRORVALUES (10=1, 11=2, 12=3 , 30=4, 31=5, 32=6) 与包含该值的实际列。本质上,我只想用我的 ERRORVALUE 替换该行中的值。
如果有人可以帮助我,我将不胜感激。
c - 在 c 中使用 gawk
谁能告诉我如何在c中使用以下gawk命令?就像我们使用“系统”函数在 c 中使用一些 shell 命令一样。此外,我想在下面的命令中给出数字,即 6、2、8 作为参数。
谢谢,任何帮助将不胜感激。
replace - replacing a specific column with a specific value using gawk
I am trying to find everywhere my data has a 90 in column 2 and two lines above change the value of column 2. For example in my data below, if I see 90 at line 11 I want to change my column 2 value at line 9 from 11 to 5. I have a predetermined set of values I want to change the number to; the values will always be 10,11,12,30,31,32 to 1,2,3,4,5,6 respectably.
My data
What I want
I have been trying to store the previous line and use that as a reference but I can only go back one line, and I need to go back two. Thank you for your help.
printing - 使用 gawk 将每 n 行打印成一行
我有一个非常大的文件,我需要在其中获取每 n 行并将其打印成一行。
我的数据:
我希望我的数据看起来像这样:
这当然是一个例子,我希望我的巨大数据文件每隔 10 行。到目前为止我试过这个:
awk - 使用 gawk 转置列和行
我正在尝试转置一个非常长的文件,我担心它不会被完全转置。
我的数据看起来像这样:
我希望我的数据看起来像这样:
第一个字符串的长度会被证明是一个问题吗?我的文件比这大约 2000 行长得多。也可以将第一个字符串的名称更改为Thisis234,然后转置吗?
http - gawk 在没有超时的情况下通过管道读取二进制数据的最后一位?
我有一个已经用 gawk 编写的程序,它可以从互联网上下载很多小信息。(媒体扫描仪和索引器)
目前它启动 wget 来获取信息。这很好,但我想简单地重用调用之间的连接。程序的运行可能会对同一个 api 服务进行 200-2000 次调用。
我刚刚发现 gawk 可以做网络并找到geturl 但是该页面底部的建议很受重视,我找不到一种简单的方法来阅读最后一行并保持连接打开。
由于我主要读取 JSON 数据,我可以设置 RS="}" 并在正文长度达到预期的内容长度时退出。不过,这可能会与任何尾随空格中断。我想要一个更强大的方法。有没有人有更好的方法来实现在 awk 中保持连接打开的零星 http 请求。目前我有以下结构......
可惜这件小事似乎破坏了这里的所有潜力。万一有人问:) ..
- 最初选择 awk 是出于历史原因——当时这个嵌入式平台上没有太多其他语言选项。
- 提前收集所有 URL 并传递给 wget 并不容易。
- 在 perl/python 等中重新实现不是一个快速的解决方案。
- 我已经研究过尝试将 url 传送到命名管道并进入 wget -i - ,但这是行不通的。数据被缓冲,并且 unbuffer 不可用 - 我认为 wget 在处理之前收集所有 URL 直到 EOF。
- 数据很小,因此缺乏压缩不是问题。
bash - 检查给定的 strftime 格式是否与日期匹配
我有 strftime 格式的时间,比如说(%Y-%m-%d %H:%M:%S)
和一个应该包含这种数据的文件,例如(2012-02-11 17:15:00)
. 我需要检查给定的模式是否真的与数据匹配。如何解决这个问题?啊,约会?
编辑: 更多信息:用户输入 strftime 格式,比如说输入。然后他输入一个应该包含这些日期的文件。我需要确保这些数据是有效的(他没有犯错)。所以我需要检查输入文件中的行,看看是否有与给定模式匹配的数据。例子:
用户输入 strftime 格式:
(%Y-%m-%d %H:%M:%S)
输入文件:
(2012-02-11 17:15:00) long sentence
有效的
用户输入 strftime 格式:
Date[%Y.%m.%d %H:%M:%S]
输入文件:
Date-2012.02.11 17:15:00- long sentence
无效的