0

私のテキストは次のようになります。

ねこ
キャッチ
cat_mouse
catty

「猫」を「犬」に置き換えたい。
私がする時

sed "s/cat/dog/"

私の結果は次のとおりです。

ドッグ
キャッチ
cat_mouse
catty

単語の一部しか一致しない場合、sed に置き換えるにはどうすればよいですか?

4

4 に答える 4

2

間違いがあります:g修飾子がありません

sed 's/cat/dog/g'

g

Apply the replacement to all matches to the regexp, not just the first.

見る

于 2013-01-21T17:19:44.613 に答える
2

単語の一部が一致する場合にのみ、 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
于 2013-01-21T19:41:38.280 に答える
2
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
于 2013-01-22T05:06:32.073 に答える
1

このための awk ソリューション

awk '{gsub("cat","dog",$0); print}' temp.txt

于 2013-01-23T02:56:50.640 に答える