linux替换文本文件中的行

时间:2014-08-12 20:02:50

标签: linux

我有一个以下格式的文件:

[users]
admin = 123456
user1 = 987654

它是一个密码文件,我需要更改用户密码。我可以获得所需的信息,但我不知道如何更换它。 这就是我阅读信息的方式:

admin=$(awk -F"[ \t]*=[ \t]*" '$1 == "admin" { print $2 }' file)

这会给我输入密码,但我不知道如何更换密码。我看着使用sed,但我不确定如何使用它。

2 个答案:

答案 0 :(得分:3)

这是一个基本的sed问题,如果您的用户名和密码不包含空格

USER=admin ; sed  "s/$USER = .*$/$USER = newpw/" file

显示

[users]
admin = newpw
user1 = 987654

使用-i.bak选项编辑文件并使用.bak扩展名创建备份。

无论如何,我希望你不要将密码存储在普通文件中。

答案 1 :(得分:1)

没有必要使用字段分隔符

awk 'BEGIN{FS=OFS=" = "}{ if($1=="admin") $2="abcdef" }'1 file

给出

[users]
admin = abcdef
user1 = 987654