0

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

例如:

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

4

3 回答 3

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
于 2013-10-23T10:52:53.203 回答
0

将每个数字存储在一个名为 prevNumber 的变量中,然后在打印下一个变量时进行检查,例如 if (newNumber < prevNumber) print prevNumber;

真的不知道你使用的是什么语言

于 2013-10-23T10:53:41.307 回答
0

你可以说:

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

对于您的输入,它会打印:

445 sss
于 2013-10-23T10:54:30.050 回答