使用sed编辑文件中特定位置的字符串

时间:2017-10-25 23:10:16

标签: bash sed

鉴于文件user.txt,我想用“michael”替换username1“john”。

假设该文件包含以下数据。

username1.user=john/password2.user=xyz

我想在文件中搜索String“username1”,然后用michael替换名称john。但是john可以在文件中出现多次,而“username1”只出现一次。

我在想是否可以使用sed搜索String“username1.user =”,然后以某种方式编辑下一个字符,用michael替换john而不更改任何文本(保留“/password2.user=xyz” “同样如此。”

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果用户名是唯一的

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

答案 1 :(得分:1)

替换任何名称:

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

仅在名称为john时才替换:

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