我的文件包含这些字段 FirstName,LastName,DOB,SSN,Telephone,Status,ValidtoTime
我想提取名字和 ValidtoTime 列。提取的数据应包含将从当前日期起在下一个月到期的用户的名字。
请在这件事上给予我帮助 ,
这个循环
while IFS=, read -ra fields; do
: # do stuff
done < filename
将遍历文件,并将逗号分隔的单词存储在名为fields
. 名字将在"${fields[0]}"
,有效时间将是 `"${fields[6]}"
使用date
命令解析时间字段并获取当前时间。做一些算术。
如果您还有其他问题,请向我们展示您尝试过的内容以及遇到的错误。
我建议在这样的事情上使用 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 > 2' 是需要满足的条件。我正在检查第三列中的条目是否大于 2。这需要根据您存储 ValidtoTime 的方式进行修改。如果需要更多帮助,请注明。也展示你的努力并分享他们不满意的地方。
'{print}' 打印每行的第一个和第三个条目。
如果您需要跳过 n 行(例如标题为 1 行),请执行以下操作:
tail -k+n csv.txt | awk -F, '$3 > 2 {print $1, $3}'
这应该可以帮助您解决问题。如果还有问题,请更具体地说明 ValidtoTime 的格式。