我的文件包含这些字段 名字,姓氏,DOB,SSN,电话,状态,ValidtoTime
我想提取名字和ValidtoTime列。提取的数据应该包含将在当前日期的下一个月内过期的用户的名字。
请帮助我,
答案 0 :(得分:1)
此循环
while IFS=, read -ra fields; do
: # do stuff
done < filename
将遍历文件,并将逗号分隔的单词存储在名为fields
的数组中。第一个名称将在"${fields[0]}"
,有效时间将为“$ {fields [6]}”
使用date
命令解析时间字段并获取当前时间。做一些算术。
如果您还有其他问题,请告诉我们您尝试过的内容以及您遇到的错误。
答案 1 :(得分:0)
我建议在这样的事情上使用awk。 一个与您的问题类似的简单示例:
~/local/tmp » cat csv.txt
1,2,3
4,2,7
9,1,1
~/local/tmp » awk -F, '$3 > 2 {print $1,$3}' csv.txt
1 3
4 7
澄清我在这里做了什么:
-F,指定分隔符为','
'$ 3&gt; 2'是需要满足的条件。我正在检查第三列中的条目是否大于2.这需要根据您存储ValidtoTime的方式进行修改。如果需要更多帮助,请注明。同时展示你的努力并分享对他们不满意的东西。
'{print}'打印每行的第一个和第三个条目。
如果您需要跳过n行(例如标题为1行),请执行以下操作:
tail -k+n csv.txt | awk -F, '$3 > 2 {print $1, $3}'
这可以帮助您解决问题。如果仍有问题,请在ValidtoTime格式化方式上更具体。