我想用sed
以下内容创建:
例如,文件中应将ssss...
(所有单词)替换为目标字符串的每个单词为gggg
。
echo "duwdbnhb ssssssmnfkejfnei" | sed s'/ssssss*/gggg/g'
duwdbnhb ggggmnfkejfnei
应该:
duwdbnhb gggg
备注 - 字符串可以是几个s
字符串(例如ss
or sss
or ssssss
...)
例子:
echo "duwdbnhb sssmnfkejfnei" | sed s'/s*/gggg/g'
duwdbnhb gggg
例子A
echo "rf3 f34kf3ein3e ssghdwydgeug swswww ssswjdbuyhb" | sed s'/ss.*/gggg/'
rf3 f34kf3ein3e gggg
但应该打印:
rf3 f34kf3ein3e gggg swswww gggg
例子B
echo "rf3 f34kf3ein3e ssghdwydgeug swswww ssswjdbuyhb" | sed s'/s.*/gggg/'
rf3 f34kf3ein3e gggg
但应该打印:
rf3 f34kf3ein3e gggg gggg gggg
答案1
如果我理解正确的话,你想替换以 2 个或更多字符开头的每个单词s
:
sed s'/ss[^[:blank:]]*/gggg/g'
答案2
你可以做:
sed -r 's/(^|[[:blank:]])(ss[^[:blank:]]*)/\1gggg/g' file.txt
例子:
% echo "rf3 f34kf3ein3e ssghdwydgeug swswww ssswjdbuyhb" | sed -r 's/(^|[[:blank:]])(ss[^[:blank:]]*)/\1gggg/g'
rf3 f34kf3ein3e gggg swswww gggg