需要您的支持以下。请帮忙
如果第5列是INV,那么只考虑column1并从column1中取出重复/相同的行/值,然后在column7中放入column6的最小值,并在第8列中放入最大值,然后需要从第7列中减去第7列的值第8列,然后加1,得到结果并将最终结果存储在第9列和第11列。 还需要在输出文件
中省略/删除列(第5列和第6列)例如在输入文件27AAACH1458C1ZZ中是6次,但是需要考虑仅5行,因为第5列中的一行具有我们需要丢弃的值REVERSED(需要考虑列5具有值“INV”的行)。
因此在7行中,在第6列中,最小值将为“IN27201800023182”,最大值将为“IN27201800024289”,因此需要在第7列中设置最小值,在第8列中设置最大值。
此后需要考虑来自列(7和8)的最后8位数字并从第8列中减去第7列。然后需要将/加1添加到减法结果并存储在第9列和第11列中。需要跳过/删除输出文件中的第5列和第6列。
a|b|c|d|e|f|g|h|i|j|k
27AAAC8C1ZZ|042018|||INV|IN27201800023521|||||
27AAAC8C1ZZ|042018|||INV|IN27201800024289|||||
27AAAC8C1ZZ|042018|||INV|IN27201800023356|||||
27AAAC8C1ZZ|032018|||REVERSED|IN27201800022431|||||
27AAAC8C1ZZ|042018|||INV|IN27201800023400|||||
27AAAC8C1ZZ|042018|||INV|IN27201800023182|||||
输出应该是
a|b|c|d|Min|Max|result|j|result
27AAAC8C1ZZ|042018|||N27201800023182|IN27201800024289|1108||1108
代码我试图找到最大值和最小值,但输出错误。
awk 'BEGIN{OFS=FS="|"} {if ($5=="INV"){ getline; min=$6;max=$6}}
{(min>$6)?min=$7:"";(max>$6)?"":max=$8}
END{print min, max}' input.txt
输出错误
IN27201800023182|
答案 0 :(得分:0)
这个脚本:
awk 'BEGIN{
OFS=FS="|";
getline;
saved=$1"|"$2; # saved for output
min=substr($6,3); # initial min and max values
max=substr($6,3);
}
{
if ($5 == "INV") { # if column $5 is INC
if (min > substr($6,3)) { min=substr($6,3); };
if (max < substr($6,3)) { max=substr($6,3); };
}
}
END{
result=max-min+1;
print saved,"","","IN"min,"IN"max,result,result;
}' \
input.txt
输出:
27AAAC8C1ZZ|042018|||N27201800023182|IN27201800024289|1108|1108