我有一个包含以下输入的文件:
10 0,12
10 1,14
10 2,63
20 0,12
20 1,98
20 3,15
我有三个值与10相关联,三个与20相关,所以我想打印每个值的最后一个值(10 - 2,63 / 20 - 3,15),也分别包括10和20。我一直在尝试,但我无法做到。
我感谢你提供我解决这个问题的任何提示。
的问候。
答案 0 :(得分:4)
只需比较当前的第一个字段和前一个字段。如果它们不匹配,请打印上一行:
$scope.getAge = function(){
var today = new Date();
var birthDate = new Date("1980-05-30T04:00:00");
var bdInMilis = birthDate.getTime();
var todayInMilis = today.getTime();
var timeAlive = todayInMilis - bdInMilis;
timeAlive = timeAlive/1000;
var numyears = Math.floor(timeAlive / 31536000);
var numdays = Math.floor((timeAlive % 31536000) / 86400);
var numhours = Math.floor(((timeAlive % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((timeAlive % 31536000) % 86400) % 3600) / 60);
var numseconds = Math.floor((((timeAlive % 31536000) % 86400) % 3600) % 60);
var ageNode = document.getElementById("age-node");
if(ageNode){
ageNode.innerHTML = ("I am "+numyears+ " years, " + numdays + " days, " + numhours + " hours, " + numminutes + " minutes, " + numseconds + " seconds old (give or take)");
// can't keep doing this calculation every second
//$scope.refreshTime();
}
};
答案 1 :(得分:0)
您是否始终10 x 10 x 10 x 20 x 20 x 20 x
?
如果您始终拥有此架构,则可以按以下空格分割信息:
echo "10 0,12 10 1,14 10 2,63 20 0,12 20 1,98 20 3,15" | awk '{split($0,n," "); print n[5],n[6],n[11],n[12]}'
这个阵列里面有什么?
n[1] = 10
n[2] = 0,12
n[3] = 10
n[4] = 1,14
n[5] = 10
n[6] = 2,63
n[7] = 20
n[8] = 0,12
n[9] = 20
n[10] = 1,98
n[11] = 20
n[12] = 3,15
答案 2 :(得分:0)
这个Awk应该这样做:
$ cat file
10 0,12 10 1,14 10 2,63 20 0,12 20 1,98 20 3,15
$ awk '{for(i=1; i<=NF; i+=2) a[$i]=$(i+1); for(k in a) print k, a[k]}' file
10 2,63
20 3,15
或者文件格式不同:
$ cat file
10 0,12
10 1,14
10 2,63
20 0,12
20 1,98
20 3,15
$ awk '{a[$1]=$2}END{for (i in a) print i, a[i]}' file
10 2,63
20 3,15