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