違いがある複数のファイルをマージする

違いがある複数のファイルをマージする

テキストファイルからスクリプトを実行しており、その内容をマージしたいと思います。ファイル名が「file1」であるとします。

ファイル1:

これは文字だ、うわー!

これでスクリプトを実行した後、いくつかのバージョンがありました。

ファイル2:

私の<>はテキストです。うわー!

ファイル3:

あなたの<>はテキストです。うわー!

ファイル4:

これはtxt <>です。うわー!

ご覧のとおり、一部の単語が別の単語に変更され、<>が追加されました。ここで、単語が変更されたときにマージするようにこれらのファイルをマージしたいと思います。

出力:

私<>あなたたち<>はtxt<>よ、来て!

順序は重要ではありません。マージするだけです。これを簡単にするツールがありますか?

ベストアンサー1

これを行うためのツールはありませんが、コーディングは難しくありません。以下はPerlの一部です。

perl -E 'for $i (1..4) { open ($file,"<","file${i}"); { local $/; @{$words[$i]} = split " ",<$file>; }; close($file); }; for $i (0..scalar(@{$words[1]})-1) { $p=0; for $j (2..4) {  if ($words[1][$i] ne $words[$j][$i]) { print $words[$j][$i]; $p++ } } unless ($p) { print $words[1][$i] }; print " "; } print "\n"'

多くのことが改善されるかもしれません。それを使用する必要がある場合、最初に変更する必要があるのは行の末尾にある追加のスペースです。おそらく、出力ワードを配列に追加し、結合機能を使用します。実際、奇妙なことをするのは非常に難しいです。

おすすめ記事