问题标签 [nawk]
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.
unix - awk 和 nawk 的不同结果
我只是在一个包含大约 2.5 亿条记录的文件上运行了这两个命令。
和
记录长度为 482。第一个命令给出了 file2.txt 中正确的记录数,即;6000 万,但 nawk 命令只给出 420 万。
我很困惑,想知道是否有人遇到过这样的问题。这个简单的命令究竟是如何在内部以不同的方式处理的?在使用 nawk 时,是否有一个缓冲区只能容纳一定数量的字节?
如果有人能对此有所了解,将不胜感激。
我的操作系统详细信息是
awk - 包含 {} 的 awk 语法
据我了解,在 awk 中,可以使用以下任一方法开始条件评估:
在通用命令行中
我发现将 (body) 括在括号中是最合乎逻辑的,例如 {(body} (称为“括号”)。
在 GNU awk、Ubuntu 12.04 下,如果括号括起来,则只有 4 个选项中的第一个会执行 - 至少在我的机器上(其他选项会产生语法错误)。如果我不加括号地运行该行,则只有第一个失败,其余 3 个工作正常。有人可以仔细解释为什么会这样吗?
perl - 需要根据文件其他列中的值替换文件的特定列值
下面是我的文件内容,下面是我的要求基于第 1 列和第 5 列中的值,我想用“1”替换第 7 列中的值。
例如:
- 如果第 1 列 =“更改”且第 5 列 =“延迟”,则将第 7 列中的值替换为“1”。
- 如果第 1 列 =“更改”且第 5 列 =“延迟”,则将第 7 列中的值替换为“1”。
- 否则不要对行做任何事情,保持原样。
输入文件:
上面只是一个示例,以便于解释。但是我想从文件中传递第 1 列和第 5 列的值以匹配文件中的值。如果匹配,则仅将第 7 列替换为值“1”,否则不对行执行任何操作,保持原样。
我尝试了几个选项,但无法达到所需的结果。
上面的命令正在替换文件中所有 3 的值,而不考虑字段。但我只想通过在循环中将不同的值传递给第 1 列和第 4 列来替换基于第 1 列和第 4 列的第 6 列值。
添加更多信息:
正如我上面提到的,上面的例子只是我的问题的最简单形式,让大家理解需求。我有一个名为“listfile”的文件,其中包含用于匹配的第 1 列和第 5 列的值列表。如果源文件中第 1 列和第 5 列中的值与从文件“listfile”传递的值匹配,则解决方案应将第 7 列中的值替换为“1”。否则不要对源文件中的行做任何事情,保持原样。
我尝试在下面做,但无法达到要求。
替换第 7 列后,原始源文件和修改后的源文件之间的记录数应相同。唯一的问题是对于文件列表文件中第 1 列和第 5 列的所有值,我需要将第 7 列值替换为“1”。
谢谢,
linux - 将行转换为unix中的列
我有下面给出的输入文件
输入文件
我正在寻找的输出。
我尝试过使用 awk 命令,但没有得到想要的输出。任何人都可以帮助我吗?
nawk - 如何在多行 nawk 输出中搜索不等于值
我有这个用于 CVS 状态管理的当前解决方案:-
这让我显示了本地修改的文件和需要修补的文件,这很棒。然而,对我来说,一个可以捕捉所有状态的更好的解决方案是当状态不等于“最新”时。我试过 s!= 和 s<> 但它似乎只允许 =。
string - 如何检查 NAWK 子字符串是否有几个可能的值?
我是 NAWK(或 AWK)的初学者,但我知道您可以使用以下方法检查子字符串值:
(这是通过 UNIX 运行的,因此是 ' $0
'。)
如果字符串可以是 ABCD或MNOP 怎么办?有没有一种简单的方法可以将其编码为单线?我试过寻找,但到目前为止只发现自己迷路了......
linux - 比较两个文件并合并数据
我有以下文件,
总计.txt
order1,5,item1
order2,6,item2
order3,7,item3
order4,6,item4
order8,9,item8
改变了.txt
order3,8,item3
order8,12,item8
total.txt 是总订单数据,changed.txt 是最近更改的数据。我想将最近的更改与总数合并,我希望输出为,
输出.txt
order1,5,item1
order2,6,item2
order3,8,item3
order4,6,item4
order8,12,item8
注意:total.txt(第 3 和第 5)行的第 2 列用 changed.txt 文件更新
我已经使用下面nawk
的来比较第一个 coulmn,但无法将其打印到输出文件。请帮助完成以下命令
nawk -F"," 'NR==FNR {a[$1]=$2;next} ($1 in a) "print??"' total.txt changed.txt
perl - 使用单行删除第 N 次出现之后的内容
我想删除包含它的任何字段中第四次出现字符“:”之后的内容。请参阅示例:
输入:
预期输出:
所以基本上任何具有“:”的字段都应该被删除。请注意,第三行没有任何变化,因为“:”只出现了三次。我已经尝试并找到了一个解决方案(不好),它不仅适用于第一行,也不适用于第二行,因为它有更多的逗号“,”
不完整的解决方案:
提前致谢
unix - awk 或 sed 在模式的第一次出现和模式的最后一次出现之间打印文本
我已经看到了一些在模式之间打印的解决方案,但我无法将它们放在一起来解决我的问题。我有一个包含如下所示视图定义的文本文件,需要提取第一个和最后一个大括号之间的定义。请注意:中间有开式和闭式大括号,应打印。awk 或 sed 中的任何解决方案?
需要输出:
bash - Printing lines according to their columns in shell scripting
i know it is very basic question but im total new in shell scripting
i a txt file called 'berkay' and content of it is like
I want to print the lines whose second column is error so the output will be
03:05:18 error blablablablabla2
I am thinking about something like " if nawk { $2}" but i need help.