ドキュメントのプレースホルダ文字列をファイルの内容に置き換える方法

ドキュメントのプレースホルダ文字列をファイルの内容に置き換える方法

A2つのファイルがありますB

FileAは以下のような文字であり、各行には複数のプレースホルダ文字列が含まれます (例: ) <@userid>

<@U39RFF91U> for all the help in this project!

Thanks for your help to enhance the data quality <@U2UNRTLBV> <@U39RFF91U> <@U2UQCN023>!
Thanks for <@U38F4TBQ9> <@U38F5PQ73> <@U38F747CZ> <@U39RT0G07> and <@U2UQ17U20> ’s great work at the New Product!


Successful release! <@U2WHAAU9H> <@U2ML3C551> <@U38F4TBQ9> <@U38F747CZ> <@U39RT0G07> <@U2UQ17U20> <@U38F5PQ73> <@U2N64H7C6>!

Praise <@U2X0APW3Y> for going above and beyond to help with the retail campaign!

ファイルは、BすべてのユーザーIDを各ユーザーの名前にマップするマッピングテーブルです。

U39RFF91U  Person1
U2UNRTLBV  Person2

Cfileの文字内容を含む最終ファイルを作成したいが、Aすべてのプレースホルダはfileのマッピングテーブルの対応する内容に置き換えられますB

Linuxでシェルスクリプトを使ってこれを行う方法を知っていますか?

ベストアンサー1

次のようにマッピングをsed編集スクリプトに変換できます。

$ sed -r 's#^([^[:blank:]]*)[[:blank:]]+(.*)#s/<@\1>/\2/g#' user_map.txt >script.sed

たとえば、次のようなscript.sedコンテンツが作成されます。

s/<@U39RFF91U>/Person1/g
s/<@U2UNRTLBV>/Person2/g

その後、この編集スクリプトをテキストファイルに適用できます。

$ sed -f script.sed letter.txt >completed_letter.txt

おすすめ記事