- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在编写一个 awk 脚本,它接受文本文件中的一些输入列并打印出每列中的最大值
输入:
$cat numbers
10 20 30.3 40.5
20 30 45.7 66.1
40 75 107.2 55.6
50 20 30.3 40.5
60 30 45.O 66.1
70 1134.7 50 70
80 75 107.2 55.6
输出:
80 1134.7 107.2 70
脚本:
BEGIN {
val=0;
line=1;
}
{
if( $2 > $3 )
{
if( $2 > val )
{
val=$2;
line=$0;
}
}
else
{
if( $3 > val )
{
val=$3;
line=$0;
}
}
}
END{
print line
}
当前输出:
60 30 45.O 66.1
第一个awk脚本我做错了什么
=======解决方案======
END {
for (i = 0; ++i <= NF;)
printf "%s", (m[i] (i < NF ? FS : RS))
}
{
for (i = 0; ++i <= NF;)
$i > m[i] && m[i] = $i
}
感谢帮助
最佳答案
由于您有四列,因此您至少需要四个变量,每列一个(或者一个数组,如果您愿意的话)。而且您不需要完整地保留任何一条线。独立处理每一列。
关于linux - Gawk 打印每列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440491/
如何在 gawk 中将一个数字指定为二进制数? 根据manual , gawk 将所有数字解释为十进制,除非它们前面有 0(八进制)或 0x(十六进制)。与某些其他语言不同,0b 无法解决问题。 例如
我使用以下 #! 为 gawk 创建可执行脚本: #!/usr/bin/gawk -f 但是,如果我想启用间隔正则表达式,我似乎无法添加 --re-interval或-W re-interval在#!
我在带有 cygwin 的 Windows 计算机上使用 gawk。 我想要做的是从三列中找到最小值和最大值,两列是纬度和经度,第三列是值。 这是代码: echo off for /f "tok
我在使用 gawk 时遇到错误。下面是我的脚本和示例文件 你们能帮帮我吗?我认为正则表达式是对的,但是当它传递给匹配函数时出现错误。我尝试了各种方法,例如将\赋予正则表达式或 double 的特殊字符
我有一些文本需要拆分以提取相关参数,而我的 [g]awk match 命令不起作用 - 我只是想了解为什么?! (我现在已经写了一个不太优雅的方法......)。 所以字符串是 blahblah|ms
我试图理解这个 gawk 命令中的一些 JavaScript: gawk 'function getip(rec) { n=split(rec,a,"\""); split(a[n-1
好的,我有一些文本: === Blah 1 === ::Junk I wish: 2 Ignore ::More Junk: 1.2-2.7 ::ABC: [http://www.google.c
我正在尝试用一组行替换包含使用 gawk 的模式的行。比方说,文件 aa 包含 aaaa ccxyzcc aaaa ddxyzdd 我正在使用 gawk 将所有包含 xyz 的行替换为一组行 111\
我有下面的脚本来从 | 中删除换行符定界文件。此命令在本地主机中运行良好。但是在 linux 服务器上运行时给出空白输出 gawk -v RS="[^|]+([|][^|]+){2}\n" '{ gs
我在我的程序中使用的简单 gawk 过滤器没有过滤掉比其余部分长一个数字的值。 这是我的文本文件: 172 East Fourth Street Toronto 4 1890
我有一个已经用 gawk 编写的程序,它可以从互联网上下载很多小的信息。 (媒体扫描仪和索引器) 目前它启动wget来获取信息。这很好,但我想简单地重用调用之间的连接。该程序的一次运行可能会对同一 a
我正在编写一个 awk 脚本,它接受文本文件中的一些输入列并打印出每列中的最大值 输入: $cat numbers 10 20 30.3 40.5 20
很抱歉关于正则表达式的第 n 个简单问题,但如果没有在我看来太复杂的解决方案,我无法得到我需要的东西。我正在解析一个只包含 3 个字母 A、E、D 序列的文件,如 AADDEEDDAEEEEEEEEA
我需要使用正则表达式来解析数据文件的特定行。我的匹配测试命令有效,我的特定行号测试命令有效,但是当我将它们放在一起时,我没有输出。 gawk 'NR==42 {print $0}' filename
更新 这是一个错误,修复程序在 git repo 中可用现在。 我无法理解 FS 中的抑扬符被解释。 例如,这是我的 file : $ cat file foo bar baz quz 我写了这个 a
如果字段分隔符为空字符串,则每个字符成为一个单独的字段 $ echo hello | awk -F '' -v OFS=, '{$1 = NF OFS $1} 1' 5,h,e,l,l,o 但是,如果
我希望 gawk 使用逗号 , 作为小数点字符来解析数字。所以我将 LC_NUMERIC 设置为 fr_FR.utf-8 但它不起作用: echo 123,2 | LC_NUMERIC=fr_FR.u
我正在尝试转置一个非常长的文件,但我担心它不会完全转置。 我的数据看起来像这样: Thisisalongstring12345678 1 AB abc 937 4.320194 Thisis
我正在扫描格式如下的日志文件: 76.69.120.244 - - [09/Jun/2015:17:13:18 -0700] "GET /file.jpg HTTP/1.1" 200 22977 "h
我有大量文件(大约 500 个)。每个文件包含两列。每个文件的第一列都是相同的。我想使用 gawk 将所有文件合并到一个文件中。 例如, File 1 a 123 b 221 c 904 Fil
我是一名优秀的程序员,十分优秀!