如何在列中找到任何减量?

时间:2013-10-23 10:49:51

标签: sorting unix awk bc

我试图找出列中的减量,如果找到则打印最后一个最高值。

例如:

111445,列中会有一个连续的增量。但是333小于它之前的数字。

111 aaa  
112 aaa  
112 aaa  
113 sdf  
115 aaa  
222 ddd  
333 sss  
333 sss  
444 sss  
445 sss  
333 aaa<<<<<<this is less then the number above it (445)  

如果找到任何此类方案,则打印445 sss

3 个答案:

答案 0 :(得分:0)

像这样,例如:

$ awk '{if (before>$1) {print before_line}} {before=$1; before_line=$0}' a
445 sss

它在做什么?检查变量before并将其值与当前值进行比较。如果它更大,请打印线。

它适用于许多情况:

$ cat a
111 aaa
112 aaa
112 aaa
113 sdf
115 aaa  <--- this
15 aaa
222 ddd
333 sss
333 sss
444 sss
445 sss  <--- this
333 aaa
$ awk '{if (before>$1) {print before_line}} {before=$1; before_line=$0}' a
115 aaa
445 sss

答案 1 :(得分:0)

将每个数字存储在名为prevNumber的单个变量中,然后当您打印下一个变量时,请执行以下操作: if(newNumber&lt; prevNumber)print prevNumber;

真的不知道你在用什么语言

答案 2 :(得分:0)

你可以说:

awk '$1 > max {max=$1; maxline=$0}; END{ print maxline}' inputfile

对于您的输入,它打印:

445 sss