1

我有这个文件:

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

谁能解释发生了什么。那里的 * 应该匹配所有字符。

4

2 回答 2

3

*表示前一个结构的任意次数的重复(包括 0 次重复)。.表示任何字符。因此,您应该.*匹配所有字符,而不是*(来自通配符)。

所以,这是解决方案:

$ sed "s/^testing=.*/testing=alpha/g"  test.txt
a b c
testing=alpha
a b c
于 2013-09-25T12:30:13.950 回答
-1

这没有解释sed,但显示了如何使用awk

awk -F= '/^testing/ {$2="alpha"}1' OFS== test.txt
于 2013-09-25T12:46:52.447 回答