如何递归打印列的内容

时间:2015-10-21 09:44:29

标签: linux date unix awk sed

我正在尝试捕获一列的内容并在满足条件时打印它。多行可以有效。我想打印它们。

说明:

cat fileName  


name1 Oct 20 user1@user.com    
name2 Oct 21 user2@user.com    
name3 Oct 19 user3@user.com    
name3 Oct 21 user4@user.com    

因此,如果生日与当前日期匹配,则获取用户的名字并将其发送到file2,file2将通过邮件发送给用户。这个功能可以很容易地为一个用户完成,但是从一个以上的用户我无法总结。

因此,对于今天,我的脚本应该将以下行写入文件。

生日快乐Name1 NAme2

我将以HTML格式发送给组ID。

2 个答案:

答案 0 :(得分:0)

使用date格式的%b %d获取当前日期,然后使用grep提取匹配的行。使用cut提取第一列。将结果分配给数组:

names=($( grep "$(date '+%b %d')" fileName | cut -f1 -d' '))
echo "Happy birthday ${names[@]}"   

答案 1 :(得分:0)

awk -v "Datum=$(date '+%b %d')" '
   ! Use $3 { List=List " " $1 }
   END { if( List !~ /^$/ ) printf "Happy birthday %s\n", List > "File.2" }
   ' YourFile

如果至少有一个具有相应日期的名称,则File.2将收到测试+用户列表。由你来发送文件(不要忘记在启动awk之前删除任何事件)