【发布时间】:2017-01-03 12:09:06
【问题描述】:
我正在尝试根据以下数据库的日期将数据从一个文件发送到多个其他文件:
100:Clinton Mcdaniel:16/04/2016
101:Patience Mccarty:18/03/2013
102:Carol Holman:24/10/2013
103:Roth Lamb:11/02/2015
104:Chase Gardner:14/06/2014
105:Jacob Tucker:05/11/2013
106:Maite Barr:24/04/2014
107:Acton Galloway:18/01/2013
108:Helen Orr:10/05/2014
109:Avye Rose:07/06/2014
110:Xerxes Richmond:13/11/2015
111:Illana Campos:22/07/2016
112:Ruby Baker:21/01/2015
113:Mark Lynn:21/06/2014
114:George Tyson:03/10/2014
115:Heather Sweeney:26/11/2015
116:Zahir Hines:08/10/2014
117:Cleo Decker:12/06/2014
118:Cyrus Best:07/01/2015
119:Dominique Goodwin:19/12/2015
171:Laura Mercado:06/06/2013
165:Kai Nash:16/07/2015
184:Oren Flores:27/09/2013
123:Rogan Rowe:05/12/2014
146:Vivian Stevens:20/01/2014
130:Anne Lawson:23/04/2015
196:Willow Powers:11/11/2015
167:Megan Caldwell:04/05/2016
195:Megan Long:03/10/2015
126:Castor Rhodes:19/06/2015
190:Anne Sullivan:12/01/2013
159:Lars Keith:28/10/2015
我想要做的是根据年份将每一行发送到特定文件,如果这些行在日期为 2013 年,我想将其添加到名为 Year2013.txt 的文件中,如果日期列有2014 比我希望它转到文件 Year2014.txt 等。
我一直在尝试将 if 语句与 AWK 一起使用,但它没有按我的预期工作。它通常只保存年份或日期,而不是数据库的整行。
我试过类似的代码
$awk -F":" '{if($3.7==2013)print $0 > "Year2013.txt"}}' IDNameDate
但它们通常不起作用
【问题讨论】:
-
为什么不
for i in {2010..2020}; do grep "$i" filename >> "Year$i.txt"; done? (根据需要调整年份范围) -
@David
grep "/${i}$" -
$3.7符号在awk中不起作用 -
@WalterA 是的,您可以稍微收紧模式,但只需使用提供的示例数据,在我的测试中效果很好。如果它作为答案发布,我会进一步锚定它。
标签: shell date if-statement awk