【发布时间】:2017-02-18 06:13:48
【问题描述】:
所以我有一个文件,每一行都有一些信息和日期(生日)。我想在给定日期之后打印带有日期的行。我使用这个 awk 命令
awk -F '|' 'FNR>1 $dateA<=$5 {print $1" "$2" "$3" "$4" "$5" "$6" "$7" "$8}' $FILE
但它不能正常工作(打印所有文件行)。日期采用 YYYY-MM-DD 格式,因此字母顺序也是按时间顺序排列的。
编辑:输入文件中的一些行
1099511628908|Chen|Wei|female|1985-08-02|2010-05-24T20:52:26.582+0000|27.98.244.108|Firefox
1099511633435|Smith|Jack|male|1981-04-19|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511635042|Kiss|Gyorgy|male|1984-09-14|2010-05-16T22:57:41.808+0000|91.137.244.86|Chrome
1099511635218|Law-Yone|Eric|male|1987-01-20|2010-05-26T20:10:22.515+0000|203.81.95.235|Chrome
1099511638444|Jasani|Chris|female|1981-05-22|2010-04-29T20:50:40.375+0000|196.223.11.62|Firefox
2199023256615|Arbelaez|Gustavo|male|1986-11-02|2010-07-17T18:53:47.633+0000|190.96.218.101|Chrome
【问题讨论】:
-
您输入的命令是否准确?您在此示例中使用单引号,因此请注意您的
$dateA变量可能不会被扩展。 -
扩展了吗?你什么意思?
-
我的意思是在这个例子中
$dateA不会被shell替换为2016-10-09,而是作为字符串$dateA提供给awk。由于 awk 不知道这个变量,它可能会用空字符串替换它。 -
dateA 是在我正在编写的代码中较早初始化的变量。 awk 如何将 dateA 视为空字符串?
-
如果它是一个shell变量,将它嵌入单引号之间会阻止它被它的值替换。我的意思是,试试
echo $HOME与echo '$HOME'。使用单引号,您将字符串$dateA提供给 awk 而不是此变量的值。