将文件中字符串的字段与shell中的变量进行比较



我有一个电话簿文件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,则打印该记录。

相关内容

  • 没有找到相关文章

最新更新