0

我需要在具有 id(比如 valueID1)且小于某个值的文件中找到一个值。由此,我需要找到与 valueID1 关联但具有不同值 id 并且位于不同行的第一个值(例如 valueID2)

假设我想在名为“生日”的文件中找到一个 id,例如生日 = xx/xx/xxxx 我想找到特定日期以下的第一个生日(我必须使用 $3 来获取实际的数字value) 然后,我想获取靠近第一个 id 的第二个 id 的值,所以“name”就像“name = Greg”一样。我想在那里输出'Greg'。我只想要第一个结果,而不是所有小于第一个指定值的结果。

关于如何做到这一点的任何想法?这是我所能做的,它根本不起作用。

{
 if((/valueID1/ $3) < 0.1) print /valueID2/ $3; else
       /valueID2/
}
4

1 回答 1

1

以下是我从您的描述中了解到的,您的数据可能如下所示:

Birthday = 2011
Name = Anna
Birthday = 1987
Name = George

在这种情况下,您想打印出“George”,因为他的生日小于 1999 年。如果这些假设是正确的,我的解决方法如下:

awk '$1=="Birthday"{birthday = $3} $1=="Name" && birthday<1999 {print $3}' birthday.txt

讨论

  • 我假设您的数据文件名为birthday.txt
  • 第一部分$1=="Birthday"{birthday = $3}将生日字段保存到变量生日
  • 接下来,如果该行包含“姓名”,我们检查我们保存的生日并打印

更新

如果年份始终是最后一个字段,则以下内容将起作用。如果仍然无法正常工作,请提供输入数据和预期输出。当我不完全理解问题时,很难给出准确的结果。祝你好运。

awk '/BirthdayYear/{birthday=$NF} $1=="Name" && birthday<1999 {print $3}' birthday.txt
于 2012-02-12T16:35:35.903 回答