このソリューションは、大規模なデータソースに適用可能な一般的なものでなければなりません。親レコードは$ 1 == $ 2で定義されます。awkがafterループを置き換えます。awkを使用してchild_valueをparent_valueで上書きしたいとします。
これは私の入力ファイル(フォーマット:ID VALUE; PARENT_ID):ある
10;20;parent_value
20;20;parent_value
は、これは私の現在のアプローチです:
awk -F\;
BEGIN {
OFS = FS
}
{
if ($1 == $2) {
mapping[$1] = $3
}
all[$1]=$0
}
END {
for (i in all) {
if (i[$3] == 'child_value') {
i[$3] = mapping[i]
}
print i
}
}
' file.in
これは私が望む結果である
10;20;child_value
20;20;parent_value
言うまでもなく、それはそのようには動作しません;-)だれでも助けてくれますか?非連続的なラインで、おそらく複数の親/子ペアの
'child_value'は定数または動的値ですか?それには複数の子 - 親値がありますか?もしそうなら、親とその子供とのマッチング方法は? – sat
子供は子供を持つことができますか(すなわち、「5; 10; typical_teen_value')? 'parent_value'または' child_value'を取得しますか? –
@JamesBrown再帰はありません – user2043423