我的文件test.txt
看起来像这样:
something=1something-else=234another-something=5678
我想将something-else=234
替换为something-else=***
,但我唯一的信息是"匹配"那是something-else=
并且在等号后面正好有三个字符。目前我有这个命令替换匹配后的所有内容:
sed -i -e 's/\(something-else=\).*/\1***/' test.txt
结果:something=1something-else=***
如何使其适应仅替换三个字符而不是整行的其余部分?
答案 0 :(得分:4)
您正在寻找
sed -i -e 's/\(something-else=\).\{3\}/\1***/' test.txt
或等同地
sed -i -e 's/\(something-else=\).../\1***/' test.txt
答案 1 :(得分:1)
如何使其适应仅替换三个字符而不是整行的其余部分?
您可以使用:
sed 's/\(something-else=\).../\1***/' file
something=1something-else=***another-something=5678
此处...
将在something-else=
之后恰好匹配3个字符。
您还可以使用量词编号:
sed -E 's/(something-else=).{3}/\1***/' file