我使用sed
查找和替換的物品,如:如何使用sed來查找和替換項目,只有當匹配不是由字母或數字約束?
sed -i 's/fish/bear/g' ./file.txt
我想這個限制只改變不前或之後有一個字母或數字的項目,如:
The fish ate the worm.
會改變,因爲只有空格在之前和之後。The lionfish ate the worm.
不會改變,因爲在fish
之前有一個字母。
如何查找和替換某些項目,但是如果至少有一個字母或數字出現在前後,該怎麼辦?
我使用sed
查找和替換的物品,如:如何使用sed來查找和替換項目,只有當匹配不是由字母或數字約束?
sed -i 's/fish/bear/g' ./file.txt
我想這個限制只改變不前或之後有一個字母或數字的項目,如:
The fish ate the worm.
會改變,因爲只有空格在之前和之後。The lionfish ate the worm.
不會改變,因爲在fish
之前有一個字母。如何查找和替換某些項目,但是如果至少有一個字母或數字出現在前後,該怎麼辦?
在fish
之前和之後使用否定字符類,如下所示:\(^\|[^[:alnum:]]\)fish\($\|[^[:alnum:]]\)
。這是說:
這保證了字符後,立即前和緊接在fish
之後的字母不是字母數字。
sed 's/\(^\|[^[:alnum:]]\)fish\($\|[^[:alnum:]]\)/\1bear\2/g'
檢查字符串前面和後面的字符。如果它在開始或結束時,將不會有人物來檢查,所以也要檢查。
sed -i 's/\(^\|[^[:alnum:]]\)fish\($\|[^[:alnum:]]\)/\1bear\2/g'
使用單詞邊界逃逸:
sed -i 's/\<fish\>/bear/g' inputfile
的sed
某些版本可能不支持此功能。
+1此外'sed -i's/\ bfish \ b/bear/g'inputfile'也可以。 – potong