sed:如何找到一个不';不包括一个特定的词?
我想更新所有不带sed:如何找到一个不';不包括一个特定的词?,sed,Sed,我想更新所有不带legacy/的导入语句,并向它们添加legacy/ 当前: import Page from 'ui/components/legacy/Page'; import Foobar from 'ui/components/Foobar'; 预期结果: import Page from 'ui/components/legacy/Page'; import Foobar from 'ui/components/legacy/Foobar'; 使用sed,我将如何使用正则表达
legacy/
的导入语句,并向它们添加legacy/
当前:
import Page from 'ui/components/legacy/Page';
import Foobar from 'ui/components/Foobar';
预期结果:
import Page from 'ui/components/legacy/Page';
import Foobar from 'ui/components/legacy/Foobar';
使用sed,我将如何使用正则表达式查找包含组件/(非遗留)
的所有导入语句,并将它们替换为组件/legacy
find-名称'*.js'-print0 | xargs-0 sed-i''s/???/??/g“
您可以使用此sed
:
sed-E'/^import/{/\/legacy\/[^/]+$/!s~/[^/]+$~/legacy&~}文件
从“ui/components/legacy/Page”导入页面;
从“ui/components/legacy/Foobar”导入Foobar;
说明:
:仅适用于以/^import/
import
:组开始{
:如果行中没有/\/legacy\/[^/]+$/!
后跟1+非/legacy/
字符/
:在以行中最后一个s~/[^/]+$~/legacy&~
开头的子字符串之前插入/
/legacy
:组结束}
查找:
find . -name '*.js' -exec sed -i -E '/^import /{ /\/legacy\/[^/]+$/!s~/[^/]+$~/legacy&~;}' {} +
最后我自己给出了答案
find-名称'*.js'-print0 | xargs-0 sed-i”“”/ui\/components\/legacy/!s/ui\/components/ui\/components\/legacy/“
sed具有逻辑NOT运算符。您可以使用/而不是传统的/!{}
。你能给我看一个完整的正则表达式吗?嗨,我想在查找和替换中使用它。我将如何修改您的正则表达式来实现这一点?我已经在回答中包含了完整的find
命令。