あるファイルの正規表現一致を別のファイルの行に置き換える [重複]

あるファイルの正規表現一致を別のファイルの行に置き換える [重複]

=> '.*',あるファイルの正規表現に一致する行を別のファイルの行に置き換えようとしています。

2つのサンプルファイル。

ファイル1:

    'text_clear' => 'Clear',
    'text_search' => 'Search',
    'text_enabled' => 'Enabled',

ファイル2:

emptied
lost
turned off

awk/sed/grepを使用してLinuxコマンドを実行して3番目のファイルを生成しようとしています。

ファイル3:

    'text_clear' => 'emptied',
    'text_search' => 'lost',
    'text_enabled' => 'turned off',

Pythonスクリプトを編集したいものを正常に抽出しましたが、可能であれば両方のタスクを実行するためにLinuxコマンドのみを使用したいと思います。

私はこの問題で3時間頭を握りました。どんな助けでも大変感謝します。

ベストアンサー1

code.awk:

BEGIN{j=1}
NR==FNR{a[NR]=$0;next}
sub(/=> '.*',$/,"=> '"a[j]"',"){++j}
1
awk -f code.awk file2 file1 > file3

一行ずつ説明する:

  • j=1初期化
  • の各行をfile2配列に配置しますa
  • の各行に対して、正規表現に一致する文字列をfile1連結して置き換えます。置換が発生すると増加します。=> '.*',$=> ' a[j] ',j
  • この行を印刷してください。
$ cat file3
    'text_clear' => 'emptied',
    'text_search' => 'lost',
    'text_enabled' => 'turned off',

おすすめ記事