问题标签 [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.

0 投票
13 回答
90184 浏览

regex - 如何使用 sed、awk 或 gawk 仅打印匹配的内容?

我看到很多关于如何使用 sed、awk 或 gawk 进行搜索和替换等操作的示例和手册页。

但就我而言,我有一个正则表达式,我想针对文本文件运行以提取特定值。我不想做搜索和替换。这是从 bash 调用的。让我们举个例子:

正则表达式示例:

示例输入文件:

听起来很简单,但我无法弄清楚如何正确调用 sed/awk/gawk。我希望做的是在我的 bash 脚本中:

我尝试过的事情包括:

0 投票
3 回答
4365 浏览

bash - gawk / awk:getline *sometimes* 的管道日期不起作用

我正在尝试将日期从一种格式转换为另一种格式:例如从“2005 年 10 月 29 日”到 2005-10-29。我有一个包含 625 个日期的列表。我使用 awk。

转换工作 - 大多数时候。然而,有时转换根本不会发生,并且应该保存(转换后的)日期的变量仍未定义。

这总是发生在完全相同的行上。在那些奇怪的行的日期上显式地(从 Bash shell)运行“日期”可以正常工作(日期被正确转换)。-- 这些行的文本内容并不重要。

为什么会出现这种行为,我该如何修复我的脚本?
她是:

如果要重现此问题:

  1. 下载此文件:uBXr0r15.txt
  2. 运行 awk 脚本。
  3. 在 bug-out-3.txt 中搜索“未定义”。
    (“未定义”在我的电脑上找到了 122 次。)

然后您可以再次运行该脚本,并且(在我的计算机上)bug-out-3.txt 保持不变——完全相同的日期未定义。

(Gawk 版本 3.1.6,Ubuntu 9.10。)

亲切的问候,马格努斯

0 投票
2 回答
1580 浏览

python - 从 Python 调用 gawk

我试图以这种方式从 Python调用gawk (AWK 的 GNU 实现)。

我的问题是“i”没有被它所代表的值取代。“i”表示的值是整数而不是字符串。我该如何解决这个问题?

0 投票
1 回答
98 浏览

string - 有效拆分字段中的元素

我在从数据库导出的文本文件中有一个字段。该字段包含地址,但有时它们很长,并且数据库允许它们包含多行。导出时,换行符被替换为美元符号,如下所示:

并非每个地址都有多行,并且没有地址包含多于三行。每行的长度是可变的。

我正在按摩数据以导入用于邮件合并的 MS Access。我想在 $ 符号上拆分字段(如果它存在)但如果该字段仅包含 1 行,我想将我的两个额外输出字段设置为零长度字符串,这样我就不会在地址中出现空行当它被打印出来时。

我有一个 awk 文件,它可以在文本文件中的所有其他数据上正常工作,但我需要让最后一点工作。我尝试了下面的代码。除了我在 else 中遇到语法错误之外,我不确定这是做我想做的事的好方法。这是在 Windows 上使用 gawk 完成的。

编辑:对此感到抱歉。这是一个示例

我只匹配没有 HEADER 的行。我需要拆分 $ 符号上的文本字符串。不应填充管道之间的字符串(这就是我试图在原始代码中获取长度的原因)。对于此示例,有 6 个输出字段,任何没有数据的字段都只是一个空字符串(也是我在代码中尝试做的)。

希望有帮助!如果这还不清楚,请告诉我。

0 投票
1 回答
1968 浏览

macos - OSX、G/AWK、Bash - “非法语句,未终止的字符串”并且没有文件输出

我有一个脚本,来自 SO 的某个人好心地提供了一个脚本来解决我遇到的问题,但是,我在让它在 OSX 上工作时遇到了一些问题。

原始来源是:

当我运行脚本时,它会出现以下错误:

从它的外观来看,[i] 的变量没有被修改为输出文件,但我不知道为什么。

如果我将 AWK 更改为 GAWK 并运行原始脚本,则输出如下:

所以我编辑相关行来修复未终止的字符串

然后它运行良好,没有错误,但没有输出文件。

有任何想法吗?我昨晚和今天早上的大部分时间都在为此倾诉。

示例输入文件:

输出的例子应该是

因此,对于 L1,输出示例如下所示:

对于 L2:

0 投票
3 回答
233 浏览

bash - 用正则表达式匹配文件

我有一个包含电影列表的输入文件(请注意,可能有一些重复的条目):

我会从另一个参考文件中为第一个文件中的每个条目找到相应的匹配项(行号):

所需的输出类似于(参考文件中的参考电影 + 行号):

基本上,两个文件中的条目的区别在于,一些字符如:空格、括号、点等都被下划线代替了。

有人可以解释一下吗?

最好的祝愿,

哈维尔

0 投票
3 回答
1875 浏览

awk - 在不破坏格式的情况下更改列的内容

$ 回声 "a b" | awk '{打印 $0; $1="1"; 打印 $0}' ab 1 b

我想收到这样的格式化输出:

有没有简单的方法来做到这一点(没有 IFS、OFS 更改)?我正在更改大表中的列,然后它看起来很丑。我不想重新格式化每一列。

谢谢。

0 投票
1 回答
270 浏览

unix - 从 R 脚本调用 gawk

嗨,我在 Windows XP 上使用 R,我的 shell 路径上有 cygwin 我想要做的是通过 R shell 命令向 gawk 发送命令:shell("gawk"{print $1}"", m[1], "_", h[i]."_79.7.dat""} 我收到此错误错误:"shell("gawk"{" 中出现意外'{' 我该如何解决这个问题?谢谢

0 投票
3 回答
402 浏览

unix - awk 替换文本但不是最后一行

我尝试了下面的 awk 衬里(在 Windows 命令提示符上):无法正常工作

输入文件在下面

一个unix解决方案也是可行的

0 投票
1 回答
398 浏览

batch-file - 使用“设置”变量,这些变量是 gawk 一个衬垫

我正在编写一个简短的 bat 文件,它使用 GMT 实用程序(通用映射工具)勾勒出 xyz 文件我想读取 max 和 min 文件并稍后在 bat 文件中使用它我所做的是

set max_color=gawk "BEGIN {max = 0} {if ($3>max) max=$3} END {print max}" %file%
set min_color=gawk "BEGIN {min = %max_color%} {if ($3'< 'min) min=$3} END {打印 min}" %file%

但是当我稍后尝试阅读时

makecpt -Crainbow -T%min_color%/%max_color%/10 > conc.cpt

而不是 reding 价值它有整个 gawk 一个班轮
我怎么能设置一个值