代码: 全选
awk '{if(!min[$1])min[$1]=20121231235959;min[$1]=min[$1]<$2?min[$1]:$2}END{for(i in min)print i,min[i]}' src/file.txt> outputs/result.txt
代码: 全选
awk '{if(!min[$1])min[$1]=20121231235959;min[$1]=min[$1]<$2?min[$1]:$2}END{for(i in min)print i,min[i]}' src/file.txt> outputs/result.txt
代码: 全选
n m
代码: 全选
{
if(!min[$1]) {
min[$1]=20121231235959;
}
if (min[$1] < $2) {
min[$1] = $1
} else {
min[$1] = $2
}
}
END{
for(i in min) {
print i,min[i]
}
}
代码: 全选
// 第一行
if(!"") {
min["a"]=20121231235959;
}
if (20121231235959 < 5) {
} else {
min["a"] = 5
}
// 第二行
if(!"") {
min["b"]=20121231235959;
}
if (20121231235959 < 4) {
} else {
min["b"] = 4
}
// 第三行
if(!5) {
}
if (5 < 2) {
} else {
min["a"] = 2
}
// 第四行
if(!4) {
}
if (4 < 5) {
min["b"] = 4
}
嗯 谢谢,好久没接触C语言了,awk那种写法我都没印象了。astolia 写了:src/file.txt应该每一行都是这样两个字段吧,然后找相同n中最小的m?代码: 全选
n m
awk中的数据都是关联数组,这段代码就是关联数组的简单应用
稍微改写一下awk程序就是这样的代码: 全选
{ if(!min[$1]) { min[$1]=20121231235959; } if (min[$1] < $2) { min[$1] = $1 } else { min[$1] = $2 } } END{ for(i in min) { print i,min[i] } }
假设src/file.txt的内容如下
a 5
b 4
a 2
b 5
则awk中min数组的变化情况如下执行到END块时,代码: 全选
// 第一行 if(!"") { min["a"]=20121231235959; } if (20121231235959 < 5) { } else { min["a"] = 5 } // 第二行 if(!"") { min["b"]=20121231235959; } if (20121231235959 < 4) { } else { min["b"] = 4 } // 第三行 if(!5) { } if (5 < 2) { } else { min["a"] = 2 } // 第四行 if(!4) { } if (4 < 5) { min["b"] = 4 }
min["a"] = 2
min["b"] = 4
已经是相同n中最小的m,然后直接输出
嗯 谢谢,好久没接触c语言了,awk那种书写方式我都没印象了。astolia 写了:src/file.txt应该每一行都是这样两个字段吧,然后找相同n中最小的m?代码: 全选
n m
awk中的数据都是关联数组,这段代码就是关联数组的简单应用
稍微改写一下awk程序就是这样的代码: 全选
{ if(!min[$1]) { min[$1]=20121231235959; } if (min[$1] < $2) { min[$1] = $1 } else { min[$1] = $2 } } END{ for(i in min) { print i,min[i] } }
假设src/file.txt的内容如下
a 5
b 4
a 2
b 5
则awk中min数组的变化情况如下执行到END块时,代码: 全选
// 第一行 if(!"") { min["a"]=20121231235959; } if (20121231235959 < 5) { } else { min["a"] = 5 } // 第二行 if(!"") { min["b"]=20121231235959; } if (20121231235959 < 4) { } else { min["b"] = 4 } // 第三行 if(!5) { } if (5 < 2) { } else { min["a"] = 2 } // 第四行 if(!4) { } if (4 < 5) { min["b"] = 4 }
min["a"] = 2
min["b"] = 4
已经是相同n中最小的m,然后直接输出
hash也可以。。。。eexpress 写了:awk就是c的写法,加上一些特有的结构。
手动比较大小的方法,很初级。
试试高级的hash,保存进去就自动给你排序完了。