Loops 打印组中包含最少数量的行-AWK/SED/PERL
我只想打印组中包含最少数字的行。我的文件包含多个列,我使用第一列来确定组。假设第1、第4、第6行在同一组中,因为第一列的内容是相同的。我的目标是为每组打印出第二列中包含最少数字的行 file.txt:Loops 打印组中包含最少数量的行-AWK/SED/PERL,loops,awk,sed,comparison,Loops,Awk,Sed,Comparison,我只想打印组中包含最少数字的行。我的文件包含多个列,我使用第一列来确定组。假设第1、第4、第6行在同一组中,因为第一列的内容是相同的。我的目标是为每组打印出第二列中包含最少数字的行 file.txt: VDDA 0.7 .... VDDB 0.2 .... VDDB 0.3 .... VDDA 0.4 .... VSS 0.1 .... VDDA 0.2 .... VSS 0.2 .... output.txt: VDDA 0.2 .... VDDB 0.2 .... VS
VDDA 0.7 ....
VDDB 0.2 ....
VDDB 0.3 ....
VDDA 0.4 ....
VSS 0.1 ....
VDDA 0.2 ....
VSS 0.2 ....
output.txt:
VDDA 0.2 ....
VDDB 0.2 ....
VSS 0.1 ....
我想我可以使用for循环和比较来完成这项工作,但我认为使用AWK/SED/PERL有一种更好的方法。如果您不关心输入文件中第一个字段的顺序,那么下面的内容也可能对您有所帮助。此外,这段代码将寻找任何第一个字段的最小数值,然后将其打印出来
awk '{a[$1]=a[$1]>$2?$2:(a[$1]?a[$1]:$2)} END{for(i in a){print i,a[i]}}' Input_file
EDIT1:如果您希望输出的顺序与$1的顺序相同,那么下面的内容也可能对您有所帮助
awk '!a[$1]{b[++i]=$1} {c[$1]=a[$1]>$2?$0:(c[$1]?c[$1]:$0);a[$1]=a[$1]>$2?$2:(a[$1]?a[$1]:$2);} END{for(j=1;j<=i;j++){print b[j],c[b[j]]}}' Input_file
awk'!a[$1]{b[++i]=$1}{c[$1]=a[$1]>2?$0:(c[$1]?c[$1]:$0);a[$1]=a[$1]>$2?$2:(a[$1]?a[$1]:$2);}END{for(j=1;j如果您不担心输入文件中第一个字段的顺序,那么下面的代码也可能对您有所帮助。此外,该代码将查找任何第一个字段的最小数值,然后再打印出来
awk '{a[$1]=a[$1]>$2?$2:(a[$1]?a[$1]:$2)} END{for(i in a){print i,a[i]}}' Input_file
EDIT1:如果您希望输出的顺序与$1的顺序相同,那么下面的内容也可能对您有所帮助
awk '!a[$1]{b[++i]=$1} {c[$1]=a[$1]>$2?$0:(c[$1]?c[$1]:$0);a[$1]=a[$1]>$2?$2:(a[$1]?a[$1]:$2);} END{for(j=1;j<=i;j++){print b[j],c[b[j]]}}' Input_file
awk'!a[$1]{b[++i]=$1}{c[$1]>2?$0:(c[$1]?c[$1]:$0);a[$1]=a[$1]>2?$2:(a[$1]?a[$1]:$2);}END{for(j=1;j使用GNU工具:
假设以下示例性输入文件包含5列行:
VDDA 0.7 c1 2 a
VDDB 0.2 c2 3 b
VDDB 0.3 c4 5 c
VDDA 0.4 c5 6 d
VSS 0.1 c6 7 e
VDDA 0.2 c7 8 f
VSS 0.2 c8 9 g
使用GNU工具:
假设以下示例性输入文件包含5列行:
VDDA 0.7 c1 2 a
VDDB 0.2 c2 3 b
VDDB 0.3 c4 5 c
VDDA 0.4 c5 6 d
VSS 0.1 c6 7 e
VDDA 0.2 c7 8 f
VSS 0.2 c8 9 g
$awk'{split(a[$1],s);a[$1]=(s[2]$awk'{split(a[$1],s);a[$1]=(s[2]如果您不关心顺序,并且如果有-u
可用,则可以使用排序
轻松完成此操作(教程:)…在任何情况下,您都必须展示您的努力来解决此问题..而且sed
绝对不可取如果您不关心顺序,并且如果-u
可用,则可以使用排序
轻松完成此操作(教程:)…在任何情况下,您都必须显示您为解决此问题所做的努力..而且sed
绝对不可取谢谢您共享您的代码。我认为EDIT1可能有错误。我得到了“未找到[:事件”另外,第一个代码只生成第一列和第二列,但我想打印整行。请现在检查EDIT1,它将为您提供完整的行作为输出,然后让我知道它是如何运行的。感谢您共享您的代码。我想EDIT1可能有错误。我得到了“a[:Event not found”另外,第一个代码只生成第一列和第二列,但我想打印整行。请现在检查EDIT1,它将为您提供完整的行作为输出,然后让我知道它是如何运行的。