我需要在文件中找到一个具有id(比如valueID1)且小于某个值的值。从那里,我需要找到与valueID1相关但具有不同值id的第一个值,并且位于不同的行(比如valueID2)
说我想在名为“birthday”的文件中找到一个id,例如birthday = xx / xx / xxxx我想找到特定日期以下的第一个生日(我必须用3美元来抢实际的数值)然后,我想要获取第一个附近的第二个id的值,所以“name”就像“name = Greg”。我想在那里输出'Greg'。我只想要第一个结果,而不是所有结果都小于第一个指定值。
有关如何做到这一点的任何想法?这就是我所能做到的,而且根本不起作用。
{
if((/valueID1/ $3) < 0.1) print /valueID2/ $3; else
/valueID2/
}
答案 0 :(得分:1)
以下是我从您的描述中理解的内容,您的数据可能如下所示:
Birthday = 2011
Name = Anna
Birthday = 1987
Name = George
在这种情况下,你想打印出“George”,因为他的生日不到1999年。如果这些假设是正确的,我就是这样解决的:
awk '$1=="Birthday"{birthday = $3} $1=="Name" && birthday<1999 {print $3}' birthday.txt
如果年份始终是最后一个字段,则以下内容将起作用。如果仍然无法正常工作,请提供输入数据和预期输出。当我不完全理解这个问题时,很难给出准确的结果。祝你好运。
awk '/BirthdayYear/{birthday=$NF} $1=="Name" && birthday<1999 {print $3}' birthday.txt