sed + 用字符串搜索单词并替换所有单词

sed + 用字符串搜索单词并替换所有单词

我想用sed以下内容创建:

例如,文件中应将ssss... (所有单词)替换为目标字符串的每个单词为gggg

echo "duwdbnhb ssssssmnfkejfnei" | sed s'/ssssss*/gggg/g'
duwdbnhb ggggmnfkejfnei

应该:

duwdbnhb gggg

备注 - 字符串可以是几个s字符串(例如ssor sssor 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

相关内容