我有一个电话簿文件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中显示日期(以秒为单位)大于date_sec
的所有联系人(例如,以我在第一行的文件为例:1463419858190456946
)。
我知道$data_sec < 6
不正确。我必须修复它。
假设您的日期(秒)是第三条记录的值,并指定:
data_sec=1463420078149548084
现在我们使用-v
将这个值输入awk,然后将第六个字段与之进行比较:
$ awk -v mydate="$data_sec" '$6 > mydate' rubrica.txt
cesc fabregas 5641287659 3456789123 2016/05/16 1463420324574207170
andrea mantovani 3402948586 0459687124 2016/05/17 1463500810082293135
marco rossi 3951326586 0458793540 2016/05/17 1463500836814967504
如果表达式$6 > mydate
的计算结果为true,则打印该记录。