sed + 文字列で単語を検索し、すべての単語を置き換えます。

sed + 文字列で単語を検索し、すべての単語を置き換えます。

以下を使って作成したいと思いますsed

たとえば、ファイルの(すべての単語)をターゲットssss... 文字列の各単語に置き換える必要がありますgggg

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

しなければならない:

duwdbnhb gggg

備考 - 文字列は複数のs文字列にすることができます(例えば、ssまたはsss... 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

関連情報