A
2つのファイルがあります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
C
fileの文字内容を含む最終ファイルを作成したいが、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