我有一个用户帐户文件:

[account]
username                      = mike
password                      = mike
expdate                       = 2015-02-14
city                          = blah
address                       = blah

[account]
username                      = george
password                      = george
city                          = blah
address                       = blah
expdate                       = 2015-02-14

[account]
username                      = hans
password                      = hans
city                          = blah
expdate                       = 2015-02-14
address                       = blah

因此,每个用户帐户都以[帐户]开头,并在其下面具有某些值。
我想使用gnu sed将用户“mike”的expdate值更改为:
expdate                       = 2016-02-14

因此,它只应在第一次出现以下情况后更改:
username                      = mike

问题是,expdate可以是用户名下面的任意行。
这能用gnu-sed解决吗?

最佳答案

你可以试试这个sed

sed '/mike/,/\[account\]/{s/\(expdate[^=]\+=\).*/\1 2016-02-14/}' yourfile

关于linux - 使用sed替换图案下的第一个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22350134/

10-10 15:25