ループ内の文字列を置き換える

ループ内の文字列を置き換える

次のように、ファイルにいくつかの文字列を追加する必要があります。

前のファイル:

Real/Test1
Real/Test1
Real/Test2
Real/Test3
Real/Test3
Real/Test4

新しいファイル:

Real/Test1  a1 b1 c1 d1
Real/Test1  a1 b1 c1 d1
Real/Test2  a2 b2 c2 d2
Real/Test3  a3 b3 c3 d3
Real/Test3  a3 b3 c3 d3
Real/Test4  a4 b4 c4 d4

列1に古い文字列を含む中間ファイルがあり、次のように新しい文字列が含まれています。

Test1 a1 b1 c1 d1
Test2 a2 b2 c2 d2
Test3 a3 b3 c3 d3
Test4 a4 b4 c4 d4

この問題を解決するのに役立つ人はいますか?

私は非常に原始的な知識を持って、次のことを試しました。

(n1 n2を同時に読み、set n1 n2 sed -i "s / $ n1 / $ n1 $ n2 / g" old>最終的に完了)

ここで「古い」入力と「中間」入力は上記のものです。

ありがとうございます!

ベストアンサー1

ファイルがリンクされたフィールドの順序で並べられているように見えるので、joinコマンドはかなり簡単に使用できます。

join old <(sed 's;^;Real/;' intermediate)

または (シェルがプロセス置換をサポートしていない場合)

sed 's;^;Real/;' intermediate | join old -

前任者。

$ sed 's;^;Real/;' intermediate | join old -
Real/Test1 a1 b1 c1 d1
Real/Test1 a1 b1 c1 d1
Real/Test2 a2 b2 c2 d2
Real/Test3 a3 b3 c3 d3
Real/Test3 a3 b3 c3 d3
Real/Test4 a4 b4 c4 d4

おすすめ記事