打印列AWK的最后一个字段

时间:2015-08-06 12:00:58

标签: awk

我有一个包含以下输入的文件:

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。我一直在尝试,但我无法做到。

我感谢你提供我解决这个问题的任何提示。

的问候。

3 个答案:

答案 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