2 つのファイルを 1 行ずつ読み取り、正規表現を使用して行トークンを抽出します。抽出されたトークンは、最初のトークンをキーとして使用して、連想配列内に格納されます。2 番目のステップでは、使用可能なすべてのキーをループして、配列内に格納されている値から出力行を作成できます。
デモンストレーションのみを目的とした、php での実装例。したがって、エラーチェックは行われず、おそらくパターンをニーズに合わせて調整する必要があります。他のすべての言語でも同じことが明らかに可能です。非常に読みやすいため、phpを選択しました。
<?php
$input_file[1]=fopen('/path/input1.list','r');
$input_file[2]=fopen('/path/input2.list','r');
# read input files line by line
foreach ($input_file as $input){
while (!feof($input)){
$tokens=array();
preg_match('/^(ID[0-9]+) (.+)$/',trim(fread($input)),$tokens);
$list[$i][$tokens[1]]=$tokens[2];
}
}
# construct output lines:
$output_file=fopen('/path/output.list','w');
foreach ($list[1] as $key=>$val){
$line=sprintf("%s %s%s\n", $key, $val,
array_key_exists($key,$list[2])?' '.$list[2][$key]:'' );
fwrite($output_file,$line);
}
# some house keeping
fclose($input_file[1]);
fclose($input_file[2]);
fclose($output_file);
?>
(私はこれをチェックしなかったことに注意してください。これを書き留めただけです。すぐに使用できるものではなく、出発点であることを意図しています)