her*_*ung 0 regex shell perl replace
我试图删除$ PATH中的条目,如果该条目包含给定的字符串foo
.例如PATH=/home/me/bin:/home/foo/bin:/usr/foo/bin:/bin
会成为PATH=/home/me/bin:/bin
.我现在有
echo $PATH | perl -pe 's/:(.*?)foo(.*?):/:/g'
Run Code Online (Sandbox Code Playgroud)
但这似乎删除了太多的条目,即使我正在尝试使用非贪婪的匹配.我究竟做错了什么?
小智 5
我会拆分字符串,选择有效的部分,然后再次加入字符串:
perl -e 'print join ":", grep !/foo/, split ":", $ENV{PATH}'
Run Code Online (Sandbox Code Playgroud)