我有这个文件:
test.txt
============
a b c
testing=123
a b c
我认为以下命令将替换testing = 123行。
sed "s/^testing=*/testing=alpha/g" test.txt
导致:
a b c
testing=alpha123
a b c
所以我需要:
sed "s/^testing=[^\n]*/testing=alpha/g" test.txt
得到这个:
a b c
testing=alpha
a b c
任何人都可以解释发生了什么。 *应匹配所有字符。
答案 0 :(得分:3)
*
表示先前构造的任意数量的重复(包括0次重复)。 .
表示任何角色。所以你应该.*
来匹配所有的字符,而不是*
(来自globbing)。
所以,这就是解决方案:
$ sed "s/^testing=.*/testing=alpha/g" test.txt
a b c
testing=alpha
a b c
答案 1 :(得分:-1)
这不会解释sed
,但会说明如何使用awk
awk -F= '/^testing/ {$2="alpha"}1' OFS== test.txt