-1

我的文件包含这些字段 FirstName,LastName,DOB,SSN,Telephone,Status,ValidtoTime

我想提取名字和 ValidtoTime 列。提取的数据应包含将从当前日期起在下一个月到期的用户的名字。

请在这件事上给予我帮助 ,

4

2 回答 2

1

这个循环

while IFS=, read -ra fields; do
    : # do stuff
done < filename

将遍历文件,并将逗号分隔的单词存储在名为fields. 名字将在"${fields[0]}",有效时间将是 `"${fields[6]}"

使用date命令解析时间字段并获取当前时间。做一些算术。

如果您还有其他问题,请向我们展示您尝试过的内容以及遇到的错误。

于 2013-07-03T19:17:08.370 回答
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 > 2' 是需要满足的条件。我正在检查第三列中的条目是否大于 2。这需要根据您存储 ValidtoTime 的方式进行修改。如果需要更多帮助,请注明。也展示你的努力并分享他们不满意的地方。

'{print}' 打印每行的第一个和第三个条目。

如果您需要跳过 n 行(例如标题为 1 行),请执行以下操作:

tail -k+n csv.txt | awk -F, '$3 > 2 {print $1, $3}'

这应该可以帮助您解决问题。如果还有问题,请更具体地说明 ValidtoTime 的格式。

于 2013-07-03T22:41:57.110 回答