【问题标题】:Compare a field of a string in a file with a variable in shell将文件中字符串的字段与 shell 中的变量进行比较
【发布时间】: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 &lt; \6我知道是不正确的。我必须修复它。

【问题讨论】:

  • 我认为您不需要将日期转换为秒。由于您的日期格式为 YYYY/MM/DD,因此只需进行字典比较就足够了。
  • awk '{if ($6 &gt; ENVIRON["data_sec"]) print}' 应该可以工作。不要忘记导出data_sec,否则awk 将看不到它。另一种选择:awk "{if (\$6 &gt; $data_sec) print}" 这里不再需要导出$data_sec
  • @DmitriChubarov 或使用awk -v dsec="$data_sec"
  • @user1934428 但是以秒为单位的日期在同一天有不同的值。
  • @BenjaminW。 : 抱歉,是我的错。我没有注意到您需要精确到秒。当然,在这种情况下,您可以忽略格式化的日期部分,因为时间戳完全编码在秒字段中。您只需要数字比较而不是字典比较。

标签: regex shell date awk compare


【解决方案1】:

假设您的日期(以秒为单位)是第三条记录的值并指定:

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 &gt; mydate 的计算结果为 true,则打印记录。

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2015-08-14
    • 2014-11-08
    • 2021-03-14
    • 2018-01-23
    • 2011-02-15
    相关资源
    最近更新 更多