@Sai、以下試してください。
awk -vHOST=$(hostname -s) '/clientName =/{print $0 FS HOST;;next} /targetUri/{gsub(/contact support team/,HOST,$0);print;next} 1' Input_file > temp_file && mv temp_file Input_file
だからここに私はクライアント名を代入しています=それが(接触サポートチーム)と一緒に値ボックスの名前だと文字列の私はこれを一時ファイルに入れて、実際のInput_fileに一時ファイルの名前を変更しています。
編集: OPのコードに従って少しコードを変更します。
awk -vHOST=$(hostname -s) '/clientName =/{$0=$0 FS HOST;print;next} /targetUri/{gsub(/contact support team/,"example.com",$0);print;next} 1' Input_file > temp_file && mv temp_file Input_file
EDIT2: @Sai、親切に以下を経ます。
awk -vHOST=$(hostname -s) #### creating a variable named HOST whose value is command's hostname -s's value.
'/clientName =/ #### searching for string clientName = in every line and if this string found then do following.
{print $0 FS HOST #### printing the value of current line along with the FS field separator with value of HOST variable here.
;next} #### putting next here for skipping all further statements here.
/targetUri/ #### search for string targetUri for every line and if string found in any line then do following.
{gsub(/contact support team/,"example.com",$0); #### substitute the value of string (contact support team) to "example.com" in that line then.
print; #### print the newly formed line(which as example.com value in it).
next #### using next keyword I am requesting awk not to proceed with further statements now.
} 1' #### awk works on condition{action} method, so if any condition is TRUE then action following it should work
so by putting 1 I am making condition as TRUE and not mentioning any action so by default action print will happen.
Input_file > temp_file #### put all the processed output into temp_file file.
&& mv temp_file Input_file #### &&(if previous awk command ran successfully then do this command) rename temp_file to Input_file now.
これはclientNameの更新でのみ機能しましたが、 "contact support team"をexample.comに置き換えることはできませんでした。 – Sai
@Sai:コードを変更しました。親切に見てください。 – RavinderSingh13
ありがとう!期待通りに機能しました。 – Sai