【发布时间】:2016-05-18 11:57:41
【问题描述】:
我有一个电话簿文件rubrica.txt,其中包含每一行的记录(姓名、第二名、电话号码、电话号码、日期、日期,以秒为单位)(每个条目用空格分隔):
andrea mantovani 3476589456 0451234567 2016/05/16 1463419858190456946
marco verratti 1265897654 3057634987 2016/05/16 1463419948782978926
zlatan ibrahimovic 2937485929 1938472639 2016/05/16 1463420078149548084
cesc fabregas 5641287659 3456789123 2016/05/16 1463420324574207170
andrea mantovani 3402948586 0459687124 2016/05/17 1463500810082293135
marco rossi 3951326586 0458793540 2016/05/17 1463500836814967504
我想在输出中查看在我插入的日期之后添加的所有联系人。
起初我读取了我想要的日期并使用以下脚本将其转换为秒:
echo "Digit the date"
read date_jap #read a date(yyyy/mm/dd)
data_sec=$(date +%s -d $data_jap) #convert the date in sec
这部分代码功能。我解释得更清楚。
我不知道如何将此日期与文件 rubrica.txt 中的日期(最后一个条目)进行比较。
我用过:
cat $RUBRICA | awk '/$data_sec < \6/ { print }'
显示所有联系人,其日期在第 6 行字段(以我的文件在第一行:1463419858190456946)中的秒数大于date_sec。
$data_sec < \6我知道是不正确的。我必须修复它。
【问题讨论】:
-
我认为您不需要将日期转换为秒。由于您的日期格式为 YYYY/MM/DD,因此只需进行字典比较就足够了。
-
awk '{if ($6 > ENVIRON["data_sec"]) print}'应该可以工作。不要忘记导出data_sec,否则awk将看不到它。另一种选择:awk "{if (\$6 > $data_sec) print}"这里不再需要导出$data_sec -
@DmitriChubarov 或使用
awk -v dsec="$data_sec" -
@user1934428 但是以秒为单位的日期在同一天有不同的值。
-
@BenjaminW。 : 抱歉,是我的错。我没有注意到您需要精确到秒。当然,在这种情况下,您可以忽略格式化的日期部分,因为时间戳完全编码在秒字段中。您只需要数字比较而不是字典比较。
标签: regex shell date awk compare