Bash 只有当匹配项不受字母或数字约束时,如何使用sed查找和替换项?
我正在使用Bash 只有当匹配项不受字母或数字约束时,如何使用sed查找和替换项?,bash,sed,Bash,Sed,我正在使用sed查找和替换项目,例如: sed -i 's/fish/bear/g' ./file.txt 我想将此限制为仅更改前后没有字母或数字的项目,例如: 鱼吃了虫子。会改变,因为只有空格在前面和后面 狮子鱼吃了蠕虫。不会改变,因为鱼的前面有一个字母 如何查找和替换某些项目,但如果至少有一个字母或数字出现在前面或后面,则不能这样做?在fish之前和之后使用负字符类,例如:\(^\\\[^[:alnum:]\)fish\($\\[^[:alnum:]\)。上面说: 行的开头或任何不是字
sed
查找和替换项目,例如:
sed -i 's/fish/bear/g' ./file.txt
我想将此限制为仅更改前后没有字母或数字的项目,例如:
会改变,因为只有空格在前面和后面鱼吃了虫子。
不会改变,因为鱼的前面有一个字母狮子鱼吃了蠕虫。
如何查找和替换某些项目,但如果至少有一个字母或数字出现在前面或后面,则不能这样做?在
fish
之前和之后使用负字符类,例如:\(^\\\[^[:alnum:]\)fish\($\\[^[:alnum:]\)
。上面说:
fish
前面和后面的字符不是字母数字
sed 's/\(^\|[^[:alnum:]]\)fish\($\|[^[:alnum:]]\)/\1bear\2/g'
在
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/\(^\|[^[:alnum:]]\)fish\($\|[^[:alnum:]]\)/\1bear\2/g'
使用单词边界转义:
sed -i 's/\<fish\>/bear/g' inputfile
sed-i's/\/bear/g'输入文件
某些版本的
sed
可能不支持此功能。使用单词边界转义:
sed -i 's/\<fish\>/bear/g' inputfile
sed-i's/\/bear/g'输入文件
某些版本的sed
可能不支持此功能