我试图找到文件中最短的数字,但我不知道该怎么做这是我的输入文件:
asd
qwmcqm
342
xsa
53425423432
54334
aseqwe
// so i want to print "342"
它必须是 AWK 脚本,所以我不能使用“排序”(在 shell 中),我已经尝试过:
while(( getline line < "FileInput" ) > 0 ){
if ( line ~ /[0-9]/ )
if (length(line) < L)
L = length(line)
}
但这不起作用!如果我将脚本内的“<”更改为“>”,它仅适用于最大数字。
答案1
您的示例适用于查找最大数字而不是最小数字的原因是因为awk
尚未显式设置的变量默认为 0。您的匹配行都不会小于 0。
由于您想要与之前找到的数字进行比较,因此可以通过检查条件中的 L 是否为 0(仅当它是第一个数字时才会出现这种情况)来确保将找到的第一个数字的长度设置为 L文件中可见)。
if (length(line) < L || L == 0) {
L = length(line)
}