私のテキストは次のようになります。
ねこ
キャッチ
cat_mouse
catty
「猫」を「犬」に置き換えたい。
私がする時
sed "s/cat/dog/"
私の結果は次のとおりです。
ドッグ
キャッチ
cat_mouse
catty
単語の一部しか一致しない場合、sed に置き換えるにはどうすればよいですか?
私のテキストは次のようになります。
ねこ
キャッチ
cat_mouse
catty
「猫」を「犬」に置き換えたい。
私がする時
sed "s/cat/dog/"
私の結果は次のとおりです。
ドッグ
キャッチ
cat_mouse
catty
単語の一部しか一致しない場合、sed に置き換えるにはどうすればよいですか?
間違いがあります:g
修飾子がありません
sed 's/cat/dog/g'
g
Apply the replacement to all matches to the regexp, not just the first.
見る
単語の一部が一致する場合にのみ、 catだけをdogに置き換えたい場合:
$ perl -pe 's/cat(?=.)/dog/' file.txt
cat
dogch
dog_mouse
dogty
私は Positive Look Around を使用しています。http://www.perlmonks.org/?node_id= 518444 を参照してください。
本当に sed が必要な場合:
sed '/^cat$/!s/cat/dog/' file.txt
bash-3.00$ cat t
cat
catch
cat_mouse
catty
cat
文字列の一部である場合にのみ置換するには
bash-3.00$ sed 's/cat\([^$]\)/dog\1/' t
cat
dogch
dog_mouse
dogty
の出現箇所をすべて置き換えるにはcat
:
bash-3.00$ sed 's/cat/dog/' t
dog
dogch
dog_mouse
dogty
このための awk ソリューション
awk '{gsub("cat","dog",$0); print}' temp.txt