AWK - 找到任意大小的每行的最小值

Vah*_*ili 1 awk min

我有一个文件的行如下:

5 3 6 4 2 3 5
1 4 3 2 6 5 8
..
Run Code Online (Sandbox Code Playgroud)

我想在每一行得到min,所以例如上面给出的输入,我应该得到:

min of first line:  2
min of second line: 1
..
Run Code Online (Sandbox Code Playgroud)

如何使用awk为每行中的任意数量的列执行此操作?

Chr*_*our 7

如果你不介意输出使用数字而不是单词,你可以使用这个衬里:

$ awk '{m=$1;for(i=1;i<=NF;i++)if($i<m)m=$i;print "min of line",NR": ",m}' file
min of line 1:  2
min of line 2:  1
Run Code Online (Sandbox Code Playgroud)

如果你真的想要计算序数:

BEGIN {
    split("first second third fourth",count," ")
}
{
    min=$1
    for(i=1;i<=NF;i++)
    if($i<min)
        min=$i

    print "min of",count[NR],"line: \t",min
}
Run Code Online (Sandbox Code Playgroud)

将此保存到script.awk并运行如下:

$ awk -f script.awk file
min of first line:    2
min of second line:   1
Run Code Online (Sandbox Code Playgroud)

显然,这只适用于最多4行的文件,但只是将序数列表增加到您认为需要的最大数量.你应该可以很容易地在网上找到一个列表.