sed を使用して、複数回表示される単語をリストの単語に置き換えます。

sed を使用して、複数回表示される単語をリストの単語に置き換えます。

複数回発生する行のリストを含むファイルがあります。

output = filename
output = filename
output = filename
output = filename

filenameまた、次の順序でエントリを置き換えるために使用したいtxtファイルには、ファイル名の時系列リストがあります。

2d_slv_Nx.19800111.SUB.nc
2d_slv_Nx.19800213.SUB.nc
2d_slv_Nx.19800322.SUB.nc
2d_slv_Nx.19800510.SUB.nc

私は次のような出力が欲しい

output = 2d_slv_Nx.19800111.SUB.nc
output = 2d_slv_Nx.19800213.SUB.nc
output = 2d_slv_Nx.19800322.SUB.nc
output = 2d_slv_Nx.19800510.SUB.nc

ベストアンサー1

   $ cat tmplate.sh 
    output = filename

    output = filename

    output = filename

    output = filename

    $ cat mkrepl.sh 

   while read fname
   do
     sed -i -e "0,/filename/s/filename/$fname/" tmplate.sh
   done < tmplate.sh
   $ 

Bashスクリプト:tmplate.shから行を読み取り、各行を変数として抽出し、fnamebashsed置換を使用して実行します。

使用sed

  • -i インライン編集
  • -e表現:

使用範囲

  • 0を/filename/の行に設定します(行0から始まると、最初の置換後にsedが停止します)。
  • filename次へ交換$fname

おすすめ記事