0

ID(valueID1など)を持ち、特定の値より小さい値をファイルで見つける必要があります。そこから、valueID1 に関連付けられているが、異なる値 ID を持ち、別の行にある最初の値を見つける必要があります (たとえば、valueID2)。

たとえば、「birthday」というファイルで、誕生日 = xx/xx/xxxx などの ID を見つけたいとします。特定の日付より下の最初の誕生日を見つけたいとします (実際の数値を取得するには、$3 を使用する必要があります)。 value) 次に、最初の ID に近い 2 番目の ID の値を取得したいので、「名前」は「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 年より前なので、「George」と出力する必要があります。これらの仮定が正しければ、次のように解決します。

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

討論

  • あなたのデータファイルは birthday.txt と呼ばれていると思います
  • 最初の部分$1=="Birthday"{birthday = $3}は、誕生日フィールドを変数birthdayに保存します
  • 次に、行に「名前」が含まれている場合は、保存した誕生日を確認して印刷します

アップデート

年が常に最後のフィールドである場合は、次のようにします。それでも機能しない場合は、入力データと期待される出力を提供してください。問題を完全に理解していない場合、正確な結果を出すことは困難です。幸運を。

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