我的文件有两列,包含日期和每天的降水量(以毫米为单位)。
2024/01/01 5
2024/01/02 0
...
2024/12/26 15
2024/12/27 0
现在我将文件的第二列在某个日期之后乘以一个常数。
awk '$2=$2*0.86' <file>
将第二列的所有值乘以 0.86。
但是我怎样才能将某个日期之后的值与常数相乘呢?
我的文件有两列,包含日期和每天的降水量(以毫米为单位)。
2024/01/01 5
2024/01/02 0
...
2024/12/26 15
2024/12/27 0
现在我将文件的第二列在某个日期之后乘以一个常数。
awk '$2=$2*0.86' <file>
将第二列的所有值乘以 0.86。
但是我怎样才能将某个日期之后的值与常数相乘呢?
如果行按日期排序,并且文件中恰好出现一行具有“特定日期”,那么您可以使用“特定日期”的存在作为触发器来更改您乘以的因子:
使用任何 awk:
使用
mlr
:由于该日期格式按时间顺序和词汇顺序排序相同,因此您可以进行简单的字符串比较。使用
perl
:请注意:
您正在使用该分配的结果作为条件(默认操作为
{print}
),因此它将删除为$2
0 或不是数字的行。还要注意,一旦为其中一个字段(此处
$2
)分配了某些内容,字段之间的原始间距将丢失,并替换为一个空格字符(的默认值OFS
)。上述 perl 方法保留了原始间距(
\K
K
保留其左边的内容)。awk
还可能值得注意的是, (OFMT
)输出的默认浮点格式为%.6g
(因此例如会变为100000.5
和100000
变为1000000.1
)1e+06
,而它%.15g
在中为perl
。