在我使用 sed 并输出到然后编辑的文件后,为什么 vi (而不是 cat)显示 ^

在我使用 sed 并输出到然后编辑的文件后,为什么 vi (而不是 cat)显示 ^

当我使用

cat Variables/user-extensions.js | sed -e 's/css/XXX/'

在表单的输入文件上

storedVars["css_body"] = "css=body";
storedVars["css_main"] = "css=main";

我看到如下输出

storedVars["XXX_body"] = "css=body";
storedVars["XXX_main"] = "css=main";

但是,如果我添加> x然后使用 vi 编辑x我看到的文件

storedVars^[[31m[^[[m^[[31m"XXX_body"^[[m^[[31m]^[[m ^[[31m=^[[m ^[[31m"css=body"^[[m^[[31m;^[[m
storedVars^[[31m[^[[m^[[31m"XXX_main"^[[m^[[31m]^[[m ^[[31m=^[[m ^[[31m"css=main"^[[m^[[31m;^[[m

代替

storedVars["XXX_body"] = "css=body";
storedVars["XXX_main"] = "css=main";

哪个如果我让输出进入标准输出,或者如果我只cat输出文件而不使用 vi 编辑它,我会得到什么。我可以将cat文件和管道连接到headortail并且输出正常,没有额外的字符。

如果我 vi 源 .js 文件,我不会看到这些额外的字符。

答案1

问题在于使用我的别名猫,它添加了特殊字符。

代替

cat Variables/user-extensions.js | sed -e 's/css/XXX/' > x

使用

sed 's/css/XXX/' Variables/user-extensions.js > x

相关内容