複数回見つかったパターンに対して異なる代替テキストを使用する方法[重複]

複数回見つかったパターンに対して異なる代替テキストを使用する方法[重複]

サンプルログファイル:

apple AAA rose
banana AAA tulip
orange AAA marigold

テキストファイルを置き換える:

111
222
333

予想出力:

apple 111 rose
banana 222 tulip
orange 333 marigold

ベストアンサー1

猫の皮をむく方法はいくつかあります。 2つのファイル間の接続が1行にあるとしましょう。たとえば、次のようにpaste行を配置し、正規AAA表現を使用して「逆参照」を含むフィールドに末尾の単語を移動します。

paste sample_log replacement-text | sed -r 's/AAA ([^[:space:]]*[[:space:]]*)(.*$)/\2 \1/'
apple 111 rose  
banana 222 tulip    
orange 333 marigold 

あるいは、awk置換項目を配列として読み込み、2番目のフィールドをその配列要素に置き換える方法は次のとおりです。

awk 'NR==FNR {T[NR] = $0; next } {$2 = T[FNR]} 1' replacement-text sample_log 
apple 111 rose
banana 222 tulip
orange 333 marigold

おすすめ記事