段落の1行上と下の単語を一致させる必要があります。

段落の1行上と下の単語を一致させる必要があります。

3行の段落があり、行の上と下の単語を名前と一致させる必要があります。

現在のファイル

time toto
time toto name titi
time toto 

time tutu
time tutu name tata
time tutu 

私はこれが欲しい。

time titi
time titi name titi
time titi 

time tata
time tata name tata
time tata 

私は成功せずにこれを試しました。

awk 'NR>1{if(/name/) sub($2,$4,prev); print prev} {prev=$0}' fic.txt

解決策はありますか?

ベストアンサー1

入力が実際に示されているのと同じであり、影響を受けるすべての文字列に正規表現のメタ文字や逆参照が含まれておらず、サブストリングまたは入力位置に望ましくない他の項目として表示されない場合は、次のようにします。

$ awk -v RS= -v ORS='\n\n' '{gsub($2,$6)}1' file
time titi
time titi name titi
time titi

time tata
time tata name tata
time tata

これが必要なものでない場合は、質問を編集してこれがうまくいかない場合を含む、より代表的な入力/出力の例を提供してください。

おすすめ記事