Sed

為什麼 vi(但不是 cat)在我使用 sed 並輸出到我然後編輯的文件後顯示 ^[[31m[^[[m^[[31m””?

  • September 20, 2015

當我使用

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";

如果我讓輸出轉到標準輸出,或者我只輸出文件而不用 vi 編輯它,這就是我得到的。cat我可以cat將文件和管道傳輸到headortail並且輸出正常,沒有多餘的字元。

如果我 vi 源 .js 文件,我看不到這些額外的字元。

問題在於使用我的別名貓,它添加了特殊字元。

代替

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

採用

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

引用自:https://unix.stackexchange.com/questions/230863