我有类似的数据:
13979 1
13980 2
13986 3
14023 4
15671 5
我想首先计算第一列的两个相邻值之间的差(13980-13979; 13986-13980; 14023-13986;等等)。然后,如果当前差异大于20,我想打印出字符串。在我的示例中:
14023 4
15671 5
我的代码:
cat file.txt | awk -F "\t" 'BEGIN {x=13979}; {print $1-x} ; {x=$1}'
但是如何在我的代码示例中添加if
语句?
答案 0 :(得分:3)
请您尝试以下。
awk '($1-prev)>20 && prev;{prev=$1}' Input_file
OR
awk '($1-prev)>20 && FNR>1;{prev=$1}' Input_file
输出如下。
14023 4
15671 5
说明: 也在此处添加了说明(以下内容仅出于说明目的,不用于运行)。
awk ' ##Starting awk script from here.
($1-prev)>20 ##Checking condition here if subtraction of $1(first field) and variable prev is greater than 20(1st condition)
&& ##Putting AND condition to check multiple conditions here.
prev; ##Checking if variable prev is NOT NULL, if both conditions are TRUE then do following.
{
prev=$1 ##Setting variable prev value as $1(first field of current line).
}' Input_file ##Mentioning Input_file name here.
答案 1 :(得分:1)
这是一个接近您所拥有的代码,但确实有效的awk:
awk -F"\t" -v dif=20 'FNR==1{x=$1; next} # first record, set x
($1-x)>dif # if this is true -- print
{x=$1}' file.txt