これは私を狂ってしまいます。bash:2つの行のフィールドの内容が同じであれば、1つのフィールドだけを置換する方法
私はコロンを4つのフィールドファイルに分けました。最後のフィールドを変数に置き換えようとしています。問題は、2つの行が同じ内容の場合、両方が変更されることです。どのラインを変更したいのかをsedに伝えればいいと思っていました。別の言葉で、最初のフィールドは、R2は、その最後のフィールド
ファイル置き換えの場合:私は、それはここでは、この
R1:name1:date1:black
R2:name2:date2:black2
のようになりたい
R1:name1:date1:black
R2:name2:date2:black
を私がこれまで持っているものである
変数にはすでに4番目のフィールドが割り当てられています。名前には、ユーザが名前を入力するためのゼニティテキストボックスが割り当てられています。
variable=$(awk -F ":" '$2 ~ /'"$name"'/ {print $4}' file)
sed -i 's/'$variable'/black2/g' file
ありがとうございます。
sed -i '/^R2/s/:black$/:black2/' file
お知らせ行の先頭のため^
、そして$
はラインに黒のどこかに置き換えることを避けるために:行はsedをあなたが制限することができ
なぜべきそれは両方の行を変更しない? –
sedに '/ g'(グローバル置換)があります。 sedが見つけたすべての値を置き換えます。さて、 'g'がなければ、最初の試合だけが置き換えられます。それは大丈夫ですか? –
と同じではないと思われるためです。 – scott