我正在使用 GNU Sed 4.2.1。我正在尝试替换下一行中的第二个字段(/etc/shadow 中的密码)。 Awk
不是一个选项。
username:P@s$w0rDh@$H:15986:0:365::::
我试过了
sed -i 's/\(^[a-z]*\):.*?:/\1:TEST:/'
但什么也没有。我尝试了很多变体,但出于某种原因,我无法让它只匹配那个字段。帮忙?
最佳答案
使用 [^:]*
匹配所有内容直到下一个 :
sed -i 's/^\([^:]*\):\([^:]*\):/\1:TEST:/'
关于regex - 我怎样才能让 sed 只匹配第一次出现的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19323529/