2017-10-25 2 views
1

ファイルuser.txtが与えられたら、username1 "john"を "michael"に置き換えます。sedを使用してファイル内の特定の位置にある文字列を編集する

ファイルに次のデータが含まれているとします。

username1.user=john/password2.user=xyz 

私は、文字列「USERNAME1」のファイルを検索し、マイケルとの名ジョンを交換したいです。しかし、「username1」は一度しか表示されませんが、johnはファイル内で複数回表示されることがあります。

もしsedを使って "username1.user ="という文字列を検索した後、次の文字を何とか編集して、後でテキストを変更せずにjohnをmichaelに置き換えようと思っていました( "/password2.user= xyz "と同じ)。

ありがとうございます。

答えて

1

ユーザ名は任意の名前を置き換えるにはユニークな

sed '/^username1\./{s/john/michael/}' 
+0

'と' johnson'に代わりますmichaelson'。もしそれが望ましいかどうかわからないが、私はそうは思わない。 –

1

の場合:名前はジョンである場合は交換のみに

$ sed 's:^\(username1\.[^=]*=\)[^/]*:\1michael:' file 
username1.user=michael/password2.user=xyz 

を:

$ sed 's:^\(username1\.[^=]*=\)john:\1michael:' file 
username1.user=michael/password2.user=xyz 
+0

こんにちはエド、私は、Mac端末を使用しています。必要に応じて出力が表示されますが、ファイルはmichaelという名前で保存されません。私は何をすべきか? – TarunS

+0

'sed 'スクリプト'ファイル> tmp && mv tmpファイル' –

関連する問題